From ae50d32758fdeea4547ca12afa16cf1b10bcadba Mon Sep 17 00:00:00 2001 From: Steven Pelech Date: Tue, 13 Oct 2026 22:08:50 -0500 Subject: [PATCH 01/13] docs: add spec for audio stutter fix and UI/topology/audio redesign --- ...10-13-ui-topology-audio-redesign-design.md | 135 ++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 docs/superpowers/specs/2026-10-13-ui-topology-audio-redesign-design.md diff --git a/docs/superpowers/specs/2026-10-13-ui-topology-audio-redesign-design.md b/docs/superpowers/specs/2026-10-13-ui-topology-audio-redesign-design.md new file mode 100644 index 0000000..83bf469 --- /dev/null +++ b/docs/superpowers/specs/2026-10-13-ui-topology-audio-redesign-design.md @@ -0,0 +1,135 @@ +# RigSwitch Audio Stutter Fix & UI / Topology / Audio Priority Redesign Specification + +**Date:** 2026-10-13 +**Branch:** `fix/audio-stutter-watchdog` + +--- + +## 1. Overview & Goals + +This specification covers the root-cause fix for background CoreAudio stuttering as well as a cohesive UI and configuration redesign for RigSwitch: + +1. **Eliminate Background CoreAudio Stuttering:** Prevent `AudioEndpointWatchdogService` from fighting Windows CoreAudio (`Audiosrv`) when a configured primary audio device is offline (e.g., USB-powered speakers in AUX/`NotPresent` mode), fix `IMMNotificationClient` COM apartment marshaling, and lazy-initialize `MainSettingsWindow` when started minimized to the system tray. +2. **Spacious Default Window & Visible Version Badge:** Increase the default `MainSettingsWindow` dimensions from `960Γ—700` to `1240Γ—840` (`MinWidth="1040"`, `MinHeight="680"`) so controls are never scrunched on startup, and display the application version (`vX.Y.Z`) in the header bar and sidebar status footer. +3. **Direct Sidebar Sub-Page Routing per Preset:** Replace the long stacked `Presets` page and redundant `Displays & Topology` / `Hardware Telemetry Summary` tab with direct sidebar navigation routes for each Desk preset (`Desk 1..3`) and Sim Rig preset (`Sim Rig 1..3`). +4. **Per-Preset 2D Monitor Topology Canvas + Slim "Off in Preset" Tray:** Give each preset its own interactive 2D spatial monitor stage where placing a monitor on the stage enables it in that preset, dragging positions it in 2D space (with edge snapping), clicking `β˜…` sets Primary `(0,0)`, clicking the HDR pill cycles HDR state, and a **"πŸ“Έ Capture Windows Layout"** button snapshots exact `(X, Y)` coordinates from Windows CCD. Disabled monitors sit in a compact pill tray below the stage. +5. **Ranked Audio & Microphone Priority Lists:** Replace separate `Primary` / `Secondary` / `Fallback` dropdowns with an ordered priority list per preset. RigSwitch and the CoreAudio Watchdog automatically route to the highest-ranked `Active` (non-blacklisted) endpoint, and the `Toggle Audio` hotkey (`Ctrl+Alt+A`) cycles through the currently `Active` endpoints in the preset's ranked list. +6. **Smart "Relevant Devices" Audio Filter:** Filter out unconnected Windows `MMDevice` registry ghosts (`NotPresent`) by default unless a device is referenced in a Preset, Blacklist, or Nickname, while preserving the two per-row Fluent toggle switches (`Win Menu Visibility` and `Exclude / Bass Shaker Lockout`) and offering filter tabs for `Relevant Devices`, `Active Only`, `Disabled / Unplugged`, and `All Registry Ghosts`. +7. **Streamlined `+ Add Nickname` Workflow:** Show only devices that currently have a custom nickname configured (with inline editing and `βœ•` removal), paired with an **"+ Add New Device Nickname"** bar whose dropdown only lists relevant devices that do not yet have a nickname. + +--- + +## 2. Architecture & Data Model Changes + +### 2.1 Backward-Compatible `WorkstationPreset` Models ([`WorkstationPreset.cs`](file:///C:/Users/Alias/repos/RigSwitch/src/RigSwitch.Core/Models/WorkstationPreset.cs)) + +To support per-preset 2D spatial monitor layouts and ranked audio/microphone priority lists without breaking existing `settings.json` files: + +- **`MonitorPlacement` Model (`RigSwitch.Core.Models.MonitorPlacement`):** + ```csharp + public sealed class MonitorPlacement + { + public string MonitorId { get; set; } = string.Empty; + public int PositionX { get; set; } + public int PositionY { get; set; } + public int Width { get; set; } = 1920; + public int Height { get; set; } = 1080; + public bool IsPrimary { get; set; } + public PresetHdrMode HdrMode { get; set; } = PresetHdrMode.Retain; + } + ``` +- **`WorkstationPreset` Additions:** + - `List MonitorPlacements { get; set; } = [];` + - Synchronized with `TargetMonitorIds` (where the primary monitor is first in `TargetMonitorIds` for backward compatibility). + - `List AudioPriorityIds { get; set; } = [];` + - `List MicrophonePriorityIds { get; set; } = [];` + - **Automatic Migration Helper (`GetEffectiveAudioPriorityList()` / `GetEffectiveMicrophonePriorityList()`):** + - If `AudioPriorityIds` is empty but legacy `PrimaryAudioId`, `SecondaryAudioId`, or `FallbackAudioId` are populated, automatically seeds the ordered list `[PrimaryAudioId, FallbackAudioId, SecondaryAudioId]` (deduplicated, non-empty) and keeps `PrimaryAudioId` / `FallbackAudioId` / `SecondaryAudioId` synchronized on save. + +### 2.2 CCD 2D Spatial Positioning ([`WindowsDisplayConfigurationService.cs`](file:///C:/Users/Alias/repos/RigSwitch/src/RigSwitch.Infrastructure/Windows/Ccd/WindowsDisplayConfigurationService.cs)) + +- **Reading Live Coordinates & Resolution:** + - Extend [`DisplayDeviceInfo`](file:///C:/Users/Alias/repos/RigSwitch/src/RigSwitch.Core/Models/DisplayDeviceInfo.cs) with optional `PositionX`, `PositionY`, `Width`, and `Height` (defaulting to `0, 0, 1920, 1080`) populated from `mode.modeInfo.sourceMode.position` and `sourceMode.width` / `sourceMode.height` during `EnumerateDisplaysAsync`. +- **Applying 2D Coordinates:** + - Add an overload or optional `IReadOnlyList? placements = null` parameter on `ApplyDisplayTopologyAsync`. + - When explicit `MonitorPlacement` coordinates are provided for a preset, set the primary monitor at `(0, 0)` (shifting relative coordinates if needed so primary is `(0, 0)`) and apply each enabled monitor's `(PositionX, PositionY)` to `clonedModes[modeIdx].modeInfo.sourceMode.position`. When no explicit placements exist, retain the linear left-to-right arrangement. + +### 2.3 Ranked Audio Routing, Cycling Toggle & Watchdog Enforcement + +- **Profile Activation ([`ProfileSwitchCoordinator.SwitchCoreAsync`](file:///C:/Users/Alias/repos/RigSwitch/src/RigSwitch.Core/Services/ProfileSwitchCoordinator.cs)):** + - Evaluates the preset's `GetEffectiveAudioPriorityList()` in order (`#1`, `#2`, `#3`, ...) and selects the first endpoint that is `DevicePresenceState.Active` and not in `BlacklistedAudioEndpointIds`. + - Invokes `_onIntentionalAudioSwitch?.Invoke(resolvedAudioId)` **before** calling `_audioDirector.SetDefaultPlaybackEndpointAsync(resolvedAudioId)`. +- **Cycling Audio Toggle ([`ProfileSwitchCoordinator.ToggleAudioOutputModeAsync`](file:///C:/Users/Alias/repos/RigSwitch/src/RigSwitch.Core/Services/ProfileSwitchCoordinator.cs)):** + - Finds all endpoints in the active preset's `GetEffectiveAudioPriorityList()` that are currently `DevicePresenceState.Active` and not blacklisted. + - Advances from the current default playback endpoint to the next active endpoint in that ranked list (wrapping around to index `0`), notifies the watchdog via `_onIntentionalAudioSwitch`, and routes default playback (and corresponding ranked microphone if configured) to that endpoint. +- **Watchdog Enforcement ([`AudioEndpointWatchdogService.cs`](file:///C:/Users/Alias/repos/RigSwitch/src/RigSwitch.Infrastructure/Windows/CoreAudio/AudioEndpointWatchdogService.cs)):** + - When `EnforcePrimaryAudio` is enabled, resolves the highest-ranked `DevicePresenceState.Active` non-blacklisted endpoint from the active preset's `GetEffectiveAudioPriorityList()`. + - Never attempts to force a `NotPresent` or `Unplugged` endpoint (such as USB speakers in AUX mode), and recognizes intentional switches from `SwitchProfileAsync` and `ToggleAudioOutputModeAsync`. + +--- + +## 3. UI & Navigation Specification ([`MainSettingsWindow.xaml`](file:///C:/Users/Alias/repos/RigSwitch/src/RigSwitch.App/Views/MainSettingsWindow.xaml)) + +### 3.1 Window Dimensions, Header & Sidebar Navigation +- **Window Dimensions:** `Width="1240"`, `Height="840"`, `MinWidth="1040"`, `MinHeight="680"`. +- **Version Display:** Expose `AppVersionText` (e.g., `v1.4.0`) on [`MainSettingsViewModel`](file:///C:/Users/Alias/repos/RigSwitch/src/RigSwitch.App/ViewModels/MainSettingsViewModel.cs) and render it as a subtle pill badge next to `⚑ RigSwitch` in the top header and in the bottom watchdog card of the left navigation sidebar. +- **Left Sidebar Navigation Rail:** + - **πŸ–₯️ Desk Presets** section header + 3 preset route items bound to `DeskPresets[0..2]` (showing preset name and a dot badge on the default desk preset). + - **🏎️ Sim Rig Presets** section header + 3 preset route items bound to `RigPresets[0..2]` (showing preset name and a dot badge on the default rig preset). + - **System & Hardware** section header: + - `πŸ”Š Audio & DAC Lockout` + - `🏷️ Device Nicknames` + - `⌨️ Hotkeys & System` + - *(The redundant `Displays & Topology` tab and `Hardware Telemetry Summary` card are removed, as monitor topology and live audio status badges now live directly inside each preset view.)* + +### 3.2 Selected Preset Page Layout +When any Desk or Sim Rig preset is selected in the left sidebar, the main content pane displays that single preset's configuration without requiring nested tab bars: +1. **Top Identity & Shortcut Bar:** + - Preset Name `TextBox`, **Default Preset for Profile** toggle/radio, **Direct Hotkey** recorder (`HotkeyRecorderControl`), and a **"⚑ Activate Preset Now"** button. +2. **Middle 2-Column Hardware Grid:** + - **Left Card β€” 2D Monitor Topology Stage & Slim "Off in Preset" Tray:** + - Header actions: `πŸ” Identify Monitors` and `πŸ“Έ Capture Windows Layout`. + - **2D Stage Canvas:** Displays rectangles for each monitor enabled in this preset, positioned proportionally by `(PositionX, PositionY)` and `(Width, Height)`. Users can drag monitor rectangles to reposition (with edge snapping), click `β˜…` to make a monitor Primary `(0,0)`, click the `HDR` badge on a monitor to cycle `Retain` β†’ `Enable HDR` β†’ `Disable HDR`, or click `βœ•` to disable the monitor for this preset. + - **Slim "Off in Preset" Dock:** Compact horizontal wrap strip underneath the canvas showing monitors not enabled in this preset. Clicking `οΌ‹` (or dragging onto the stage) enables the monitor on the canvas. + - **Right Card β€” Playback Audio Priority Order (Ranked List):** + - Header action: Dropdown + `οΌ‹ Add Device` button (listing relevant un-added playback devices). + - Ordered list of ranked playback endpoints (`#1`, `#2`, `#3`, ...) with live status pills (`● Active Now`, `● Ready`, `● Offline`), move `↑` / `↓` buttons, and `βœ•` remove button. + - Compact footer row inside the card for **Playback Volume Behavior** (`Retain System Volume` vs `Custom Volume % + Mute`). +3. **Bottom 2-Column Auxiliary Grid:** + - **Left Card β€” Microphone Priority Order & Input Level:** + - Ranked microphone priority list (`#1`, `#2`, ...) with `οΌ‹ Add Mic`, `↑` / `↓` reorder, `βœ•` remove, and custom mic volume slider. + - **Right Card β€” Lifecycle Application Hooks:** + - `+ Add Application (.exe)` button and list of launch/terminate hooks for the preset. + +### 3.3 Audio & DAC Lockout Page +- **Filter Segmented Control:** + - `Relevant Devices` *(Default)*: Shows any endpoint where `State == Active`, `State == Disabled`, `State == Unplugged`, OR the endpoint ID is referenced in any Preset, Blacklist, or Nickname. Hides unconnected `NotPresent` Windows registry ghosts. + - `Active Only`: Shows only `DevicePresenceState.Active` endpoints. + - `Disabled / Unplugged`: Shows `Disabled` and `Unplugged` endpoints. + - `All Registry Ghosts`: Shows all enumerated endpoints including unconnected `NotPresent` registry entries. +- **Per-Row Controls:** + - Left Fluent toggle switch (`IsVisible`): toggles visibility in the Windows Sound menu. + - Device Friendly Name, Adapter Name, and Endpoint ID. + - Right Fluent toggle switch (`IsBlacklisted`, Amber style): `Exclude / Bass Shaker DAC` lockout toggle. + - Presence state badge (`Active`, `Disabled`, `Unplugged`, `Not Present`). + +### 3.4 Device Nicknames Page (`+ Add Nickname` Workflow) +- **Top `+ Add New Device Nickname` Card:** + - `ComboBox` bound to `UnnicknamedDeviceOptions` (containing only **relevant** displays, playback devices, and microphones that do **not** currently have a nickname in `CustomDeviceNicknames`). + - `TextBox` for entering the new nickname + **`οΌ‹ Add Nickname`** button. +- **Configured Nicknames List:** + - Displays only devices that currently have a non-empty nickname. + - Each row shows the device type badge (`Display`, `Audio`, `Mic`), original hardware name/ID, an editable `TextBox` for updating the nickname inline, and a **`βœ•`** button to remove the nickname (which returns the device to `UnnicknamedDeviceOptions`). + +--- + +## 4. Verification & Testing Plan + +1. **Unit Tests (`RigSwitch.Tests.Unit`):** + - `AudioEndpointWatchdogServiceTests`: Verify offline primary (`NotPresent`) falls back to active ranked device without stutter loops. + - `ProfileSwitchCoordinatorAudioToggleTests`: Verify ranked audio priority resolution on profile switch and cycling across active ranked devices on `ToggleAudioOutputModeAsync`. + - `MainSettingsViewModel` tests: Verify `Relevant` audio filter hides unreferenced `NotPresent` ghosts while keeping preset-referenced offline devices, verify `+ Add Nickname` only offers un-nicknamed devices and removes/edits existing nicknames, and verify per-preset selection and monitor canvas inclusion/exclusion. +2. **Visual Verification (`UiScreenshotCaptureTests` & Live Screenshot Inspection):** + - Render `MainSettingsWindow` at `1240Γ—840` across `presets`, `audio`, `nicknames`, and `hotkeys` routes, capture PNGs via `CaptureScreenshotAsync`, and inspect them with `view_file` to confirm spacing, typography, version badges, 2D monitor canvas, and toggle switches. +3. **Build, Lint & Typecheck:** + - Run `dotnet test`, `dotnet build --warnaserror`, `npm run lint`, and `npx tsc --noEmit`. From 733a98708607911adf8668baf1874b8eddbe883c Mon Sep 17 00:00:00 2001 From: Steven Pelech Date: Tue, 13 Oct 2026 22:25:37 -0500 Subject: [PATCH 02/13] fix: stop audio watchdog fight loop on NotPresent endpoints and fix COM apartment threading --- src/RigSwitch.App/App.xaml.cs | 22 ++-- .../Services/ProfileSwitchCoordinator.cs | 8 +- .../CoreAudio/AudioEndpointWatchdogService.cs | 100 +++++++++++++--- .../Windows/CoreAudio/ComInterfaces.cs | 21 +++- .../CoreAudio/WindowsNativeAudioProvider.cs | 50 +++++--- .../AudioEndpointWatchdogServiceTests.cs | 108 ++++++++++++++++++ ...rofileSwitchCoordinatorAudioToggleTests.cs | 42 +++++++ 7 files changed, 294 insertions(+), 57 deletions(-) diff --git a/src/RigSwitch.App/App.xaml.cs b/src/RigSwitch.App/App.xaml.cs index 25dcd88..07282c4 100644 --- a/src/RigSwitch.App/App.xaml.cs +++ b/src/RigSwitch.App/App.xaml.cs @@ -86,7 +86,8 @@ protected override async void OnStartup(StartupEventArgs e) sp.GetRequiredService(), sp.GetRequiredService(), sp.GetRequiredService(), - appHookService: sp.GetRequiredService())); + appHookService: sp.GetRequiredService(), + onIntentionalAudioSwitch: sp.GetRequiredService().NotifyIntentionalSwitch)); builder.Services.AddSingleton(); builder.Services.AddSingleton(); @@ -101,7 +102,11 @@ protected override async void OnStartup(StartupEventArgs e) sp.GetRequiredService(), sp.GetRequiredService(), sp.GetRequiredService(), - (view, path) => sp.GetRequiredService().CaptureScreenshotAsync(view, path))); + (view, path) => + { + var window = Dispatcher.Invoke(() => _mainWindow ??= sp.GetRequiredService()); + return window.CaptureScreenshotAsync(view, path); + })); builder.Services.AddSingleton(); _host = builder.Build(); @@ -118,7 +123,6 @@ protected override async void OnStartup(StartupEventArgs e) var settingsStorage = _host.Services.GetRequiredService(); var coordinator = _host.Services.GetRequiredService(); var viewModel = _host.Services.GetRequiredService(); - _mainWindow = _host.Services.GetRequiredService(); _trayIconService = _host.Services.GetRequiredService(); var watchdog = _host.Services.GetRequiredService(); @@ -183,15 +187,6 @@ protected override async void OnStartup(StartupEventArgs e) { if (args.Success) { - var activePreset = args.ActivePreset; - var audioTarget = coordinator.CurrentAudioOutputMode == AudioOutputMode.Secondary && !string.IsNullOrWhiteSpace(activePreset?.SecondaryAudioId) - ? activePreset?.SecondaryAudioId - : activePreset?.PrimaryAudioId; - if (!string.IsNullOrWhiteSpace(audioTarget)) - { - watchdog.NotifyIntentionalSwitch(audioTarget); - } - _trayIconService.UpdateTrayState(args.NewProfile, args.ActivePreset); _trayIconService.ShowNotification("RigSwitch", $"Switched to {args.NewProfile} setup [{args.ActivePreset?.Name ?? "Default"}]."); } @@ -237,13 +232,14 @@ protected override async void OnStartup(StartupEventArgs e) private void ShowSettingsWindow() { - if (_mainWindow == null) + if (_host == null) { return; } Dispatcher.Invoke(() => { + _mainWindow ??= _host.Services.GetRequiredService(); MainWindow = _mainWindow; _mainWindow.Show(); if (_mainWindow.WindowState == WindowState.Minimized) diff --git a/src/RigSwitch.Core/Services/ProfileSwitchCoordinator.cs b/src/RigSwitch.Core/Services/ProfileSwitchCoordinator.cs index a05677d..7e82758 100644 --- a/src/RigSwitch.Core/Services/ProfileSwitchCoordinator.cs +++ b/src/RigSwitch.Core/Services/ProfileSwitchCoordinator.cs @@ -15,6 +15,7 @@ public sealed partial class ProfileSwitchCoordinator : IProfileSwitchCoordinator private readonly IAudioEndpointDirector _audioDirector; private readonly ISettingsStorageService _settingsStorageService; private readonly IApplicationLifecycleHookService? _appHookService; + private readonly Action? _onIntentionalAudioSwitch; private readonly SemaphoreSlim _gate = new(1, 1); private bool _disposed; private UserSettings? _settings; @@ -27,12 +28,14 @@ public sealed partial class ProfileSwitchCoordinator : IProfileSwitchCoordinator /// The settings storage service. /// The initial workstation profile mode. /// Optional application lifecycle hook service. + /// Optional callback invoked with the resolved endpoint ID immediately before switching playback audio. public ProfileSwitchCoordinator( IDisplayConfigurationService displayConfigService, IAudioEndpointDirector audioDirector, ISettingsStorageService settingsStorageService, ProfileMode initialProfile = ProfileMode.Desk, - IApplicationLifecycleHookService? appHookService = null) + IApplicationLifecycleHookService? appHookService = null, + Action? onIntentionalAudioSwitch = null) { ArgumentNullException.ThrowIfNull(displayConfigService); ArgumentNullException.ThrowIfNull(audioDirector); @@ -42,6 +45,7 @@ public ProfileSwitchCoordinator( _audioDirector = audioDirector; _settingsStorageService = settingsStorageService; _appHookService = appHookService; + _onIntentionalAudioSwitch = onIntentionalAudioSwitch; CurrentProfile = initialProfile; } @@ -121,6 +125,7 @@ public async Task ToggleAudioOutputModeAsync(CancellationToken var resolvedAudioId = ResolveAudioEndpoint(targetAudioId, preset.FallbackAudioId, playbackEndpoints, blacklisted); if (!string.IsNullOrWhiteSpace(resolvedAudioId)) { + _onIntentionalAudioSwitch?.Invoke(resolvedAudioId); await _audioDirector.SetDefaultPlaybackEndpointAsync(resolvedAudioId, cancellationToken).ConfigureAwait(false); } @@ -240,6 +245,7 @@ private async Task SwitchCoreAsync(ProfileMode targetProfile, int? targetP var resolvedAudioId = ResolveAudioEndpoint(targetAudioId, preset.FallbackAudioId, playbackEndpoints, blacklisted); if (!string.IsNullOrWhiteSpace(resolvedAudioId)) { + _onIntentionalAudioSwitch?.Invoke(resolvedAudioId); await _audioDirector.SetDefaultPlaybackEndpointAsync(resolvedAudioId, cancellationToken).ConfigureAwait(false); } diff --git a/src/RigSwitch.Infrastructure/Windows/CoreAudio/AudioEndpointWatchdogService.cs b/src/RigSwitch.Infrastructure/Windows/CoreAudio/AudioEndpointWatchdogService.cs index d81530c..43d0215 100644 --- a/src/RigSwitch.Infrastructure/Windows/CoreAudio/AudioEndpointWatchdogService.cs +++ b/src/RigSwitch.Infrastructure/Windows/CoreAudio/AudioEndpointWatchdogService.cs @@ -181,14 +181,16 @@ private async Task EvaluateEndpointChangeAsync(string newEndpointId, Cancellatio return; } - bool isBlacklisted = settings.BlacklistedAudioEndpointIds?.Any(b => MatchesEndpoint(b, newEndpointId)) == true; + var blacklisted = settings.BlacklistedAudioEndpointIds; + var renderEndpoints = TryGetRenderEndpoints(); + + bool isBlacklisted = blacklisted?.Any(b => MatchesEndpoint(b, newEndpointId)) == true; if (isBlacklisted) { string? targetId = null; lock (_syncLock) { - if (!string.IsNullOrWhiteSpace(_activeExpectedEndpointId) && - settings.BlacklistedAudioEndpointIds?.Any(b => MatchesEndpoint(b, _activeExpectedEndpointId)) != true) + if (IsEndpointAvailable(_activeExpectedEndpointId, blacklisted, renderEndpoints)) { targetId = _activeExpectedEndpointId; } @@ -197,14 +199,14 @@ private async Task EvaluateEndpointChangeAsync(string newEndpointId, Cancellatio if (string.IsNullOrWhiteSpace(targetId)) { var activePreset = settings.GetActivePreset(settings.LastActiveProfile); - targetId = (settings.ActiveAudioOutputMode == AudioOutputMode.Secondary && !string.IsNullOrWhiteSpace(activePreset.SecondaryAudioId)) - ? activePreset.SecondaryAudioId - : activePreset.PrimaryAudioId; + targetId = ResolveEffectiveTargetEndpoint(activePreset, settings.ActiveAudioOutputMode, blacklisted, renderEndpoints); + } - if (string.IsNullOrWhiteSpace(targetId) || settings.BlacklistedAudioEndpointIds?.Any(b => MatchesEndpoint(b, targetId)) == true) - { - targetId = activePreset.FallbackAudioId; - } + if (string.IsNullOrWhiteSpace(targetId) && renderEndpoints is { Count: > 0 }) + { + targetId = renderEndpoints + .FirstOrDefault(e => e.State == DevicePresenceState.Active && blacklisted?.Any(b => MatchesEndpoint(b, e.Id)) != true) + ?.Id; } if (!string.IsNullOrWhiteSpace(targetId)) @@ -220,22 +222,25 @@ private async Task EvaluateEndpointChangeAsync(string newEndpointId, Cancellatio return; } - // Enforce primary audio when enabled and in Primary audio mode + // Enforce primary audio (or its active fallback) when enabled and in Primary audio mode if (settings.EnforcePrimaryAudio && settings.ActiveAudioOutputMode == AudioOutputMode.Primary) { var activePreset = settings.GetActivePreset(settings.LastActiveProfile); - var primaryId = activePreset.PrimaryAudioId; - - if (!string.IsNullOrWhiteSpace(primaryId) && - !MatchesEndpoint(primaryId, newEndpointId) && - settings.BlacklistedAudioEndpointIds?.Any(b => MatchesEndpoint(b, primaryId)) != true) + var effectiveTargetId = ResolveEffectiveTargetEndpoint( + activePreset, + AudioOutputMode.Primary, + blacklisted, + renderEndpoints); + + if (!string.IsNullOrWhiteSpace(effectiveTargetId) && + !MatchesEndpoint(effectiveTargetId, newEndpointId)) { lock (_syncLock) { - _activeExpectedEndpointId = primaryId; + _activeExpectedEndpointId = effectiveTargetId; } - await _director.SetDefaultPlaybackEndpointAsync(primaryId, cancellationToken).ConfigureAwait(false); + await _director.SetDefaultPlaybackEndpointAsync(effectiveTargetId, cancellationToken).ConfigureAwait(false); return; } } @@ -252,6 +257,65 @@ private async Task EvaluateEndpointChangeAsync(string newEndpointId, Cancellatio } } + private IReadOnlyList? TryGetRenderEndpoints() + { + try + { + return _provider.EnumerateRenderEndpoints(); + } + catch (Exception ex) + { + Debug.WriteLine($"[AudioEndpointWatchdogService] Error enumerating render endpoints: {ex}"); + return null; + } + } + + private static string? ResolveEffectiveTargetEndpoint( + WorkstationPreset activePreset, + AudioOutputMode mode, + IReadOnlyList? blacklisted, + IReadOnlyList? renderEndpoints) + { + var preferredId = (mode == AudioOutputMode.Secondary && !string.IsNullOrWhiteSpace(activePreset.SecondaryAudioId)) + ? activePreset.SecondaryAudioId + : activePreset.PrimaryAudioId; + + if (IsEndpointAvailable(preferredId, blacklisted, renderEndpoints)) + { + return preferredId; + } + + if (IsEndpointAvailable(activePreset.FallbackAudioId, blacklisted, renderEndpoints)) + { + return activePreset.FallbackAudioId; + } + + return null; + } + + private static bool IsEndpointAvailable( + string? candidateId, + IReadOnlyList? blacklisted, + IReadOnlyList? renderEndpoints) + { + if (string.IsNullOrWhiteSpace(candidateId)) + { + return false; + } + + if (blacklisted?.Any(b => MatchesEndpoint(b, candidateId)) == true) + { + return false; + } + + if (renderEndpoints is { Count: > 0 }) + { + return renderEndpoints.Any(e => e.State == DevicePresenceState.Active && MatchesEndpoint(candidateId, e.Id)); + } + + return true; + } + private bool IsExpectedOrIntentional(string endpointId) { if (!string.IsNullOrWhiteSpace(_activeExpectedEndpointId) && diff --git a/src/RigSwitch.Infrastructure/Windows/CoreAudio/ComInterfaces.cs b/src/RigSwitch.Infrastructure/Windows/CoreAudio/ComInterfaces.cs index 4c4b14c..9ba0490 100644 --- a/src/RigSwitch.Infrastructure/Windows/CoreAudio/ComInterfaces.cs +++ b/src/RigSwitch.Infrastructure/Windows/CoreAudio/ComInterfaces.cs @@ -196,15 +196,24 @@ public interface IMMDeviceEnumerator /// CoreAudio endpoint notification client COM interface. /// [ComImport] -[Guid("79912872-C81A-4839-B470-B0E73A16A602")] +[Guid("7991EEC9-7E89-4D85-8390-6C703CEC60C0")] [InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] public interface IMMNotificationClient { - void OnDeviceStateChanged([MarshalAs(UnmanagedType.LPWStr)] string pwstrDeviceId, DevicePresenceState dwNewState); - void OnDeviceAdded([MarshalAs(UnmanagedType.LPWStr)] string pwstrDeviceId); - void OnDeviceRemoved([MarshalAs(UnmanagedType.LPWStr)] string pwstrDeviceId); - void OnDefaultDeviceChanged(EDataFlow flow, ERole role, [MarshalAs(UnmanagedType.LPWStr)] string pwstrDefaultDeviceId); - void OnPropertyValueChanged([MarshalAs(UnmanagedType.LPWStr)] string pwstrDeviceId, PROPERTYKEY key); + [PreserveSig] + int OnDeviceStateChanged([MarshalAs(UnmanagedType.LPWStr)] string pwstrDeviceId, DevicePresenceState dwNewState); + + [PreserveSig] + int OnDeviceAdded([MarshalAs(UnmanagedType.LPWStr)] string pwstrDeviceId); + + [PreserveSig] + int OnDeviceRemoved([MarshalAs(UnmanagedType.LPWStr)] string pwstrDeviceId); + + [PreserveSig] + int OnDefaultDeviceChanged(EDataFlow flow, ERole role, [MarshalAs(UnmanagedType.LPWStr)] string pwstrDefaultDeviceId); + + [PreserveSig] + int OnPropertyValueChanged([MarshalAs(UnmanagedType.LPWStr)] string pwstrDeviceId, PROPERTYKEY key); } /// diff --git a/src/RigSwitch.Infrastructure/Windows/CoreAudio/WindowsNativeAudioProvider.cs b/src/RigSwitch.Infrastructure/Windows/CoreAudio/WindowsNativeAudioProvider.cs index f246451..55dd6be 100644 --- a/src/RigSwitch.Infrastructure/Windows/CoreAudio/WindowsNativeAudioProvider.cs +++ b/src/RigSwitch.Infrastructure/Windows/CoreAudio/WindowsNativeAudioProvider.cs @@ -14,7 +14,8 @@ public sealed partial class WindowsNativeAudioProvider : INativeAudioProvider, I private readonly IMMDeviceEnumerator? _deviceEnumerator; private readonly IPolicyConfig? _policyConfig; private readonly Action? _registryFallbackAction; - private readonly bool _ownsEnumerator; + private readonly bool _ownsCallbackEnumerator; + private IMMDeviceEnumerator? _callbackEnumerator; private bool _isCallbackRegistered; private bool _disposed; @@ -28,13 +29,16 @@ public WindowsNativeAudioProvider() { try { - _deviceEnumerator = CreateDeviceEnumerator(); - _ownsEnumerator = true; - int hr = _deviceEnumerator.RegisterEndpointNotificationCallback(this); - if (hr == 0) + _ownsCallbackEnumerator = true; + Task.Run(() => { - _isCallbackRegistered = true; - } + _callbackEnumerator = CreateDeviceEnumerator(); + int hr = _callbackEnumerator.RegisterEndpointNotificationCallback(this); + if (hr == 0) + { + _isCallbackRegistered = true; + } + }).GetAwaiter().GetResult(); } catch { @@ -54,15 +58,16 @@ internal WindowsNativeAudioProvider( Action? registryFallbackAction = null) { _deviceEnumerator = deviceEnumerator; + _callbackEnumerator = deviceEnumerator; _policyConfig = policyConfig; _registryFallbackAction = registryFallbackAction; - _ownsEnumerator = false; + _ownsCallbackEnumerator = false; - if (_deviceEnumerator != null) + if (_callbackEnumerator != null) { try { - int hr = _deviceEnumerator.RegisterEndpointNotificationCallback(this); + int hr = _callbackEnumerator.RegisterEndpointNotificationCallback(this); if (hr == 0) { _isCallbackRegistered = true; @@ -480,29 +485,34 @@ private static string ReadStringProperty(IPropertyStore store, PROPERTYKEY key) private static partial Regex EndpointGuidRegex(); /// - public void OnDeviceStateChanged(string pwstrDeviceId, DevicePresenceState dwNewState) + public int OnDeviceStateChanged(string pwstrDeviceId, DevicePresenceState dwNewState) { + return 0; } /// - public void OnDeviceAdded(string pwstrDeviceId) + public int OnDeviceAdded(string pwstrDeviceId) { + return 0; } /// - public void OnDeviceRemoved(string pwstrDeviceId) + public int OnDeviceRemoved(string pwstrDeviceId) { + return 0; } /// - public void OnDefaultDeviceChanged(EDataFlow flow, ERole role, string pwstrDefaultDeviceId) + public int OnDefaultDeviceChanged(EDataFlow flow, ERole role, string pwstrDefaultDeviceId) { DefaultDeviceChanged?.Invoke(flow, role, pwstrDefaultDeviceId); + return 0; } /// - public void OnPropertyValueChanged(string pwstrDeviceId, PROPERTYKEY key) + public int OnPropertyValueChanged(string pwstrDeviceId, PROPERTYKEY key) { + return 0; } /// @@ -515,13 +525,13 @@ public void Dispose() _disposed = true; - if (_deviceEnumerator != null) + if (_callbackEnumerator != null) { if (_isCallbackRegistered) { try { - _deviceEnumerator.UnregisterEndpointNotificationCallback(this); + _callbackEnumerator.UnregisterEndpointNotificationCallback(this); } catch { @@ -530,10 +540,12 @@ public void Dispose() _isCallbackRegistered = false; } - if (_ownsEnumerator) + if (_ownsCallbackEnumerator) { - SafeReleaseComObject(_deviceEnumerator); + SafeReleaseComObject(_callbackEnumerator); } + + _callbackEnumerator = null; } } } diff --git a/tests/RigSwitch.Tests.Unit/AudioEndpointWatchdogServiceTests.cs b/tests/RigSwitch.Tests.Unit/AudioEndpointWatchdogServiceTests.cs index 2f149e3..6c320ff 100644 --- a/tests/RigSwitch.Tests.Unit/AudioEndpointWatchdogServiceTests.cs +++ b/tests/RigSwitch.Tests.Unit/AudioEndpointWatchdogServiceTests.cs @@ -173,4 +173,112 @@ public async Task WhenMultipleEventsFiredRapidly_WatchdogDebouncesAndRevertsOnce await _director.Received(1).SetDefaultPlaybackEndpointAsync("{SPEAKERS}", Arg.Any()); } + + [Fact] + public async Task WhenEnforcePrimaryAudioEnabled_AndPrimaryIsNotPresent_AndCurrentIsFallback_WatchdogDoesNotRevertToOfflinePrimary() + { + var settings = new UserSettings + { + EnforcePrimaryAudio = true, + ActiveAudioOutputMode = AudioOutputMode.Primary, + DeskPresets = + [ + new WorkstationPreset + { + PrimaryAudioId = "{PEBBLE-USB}", + FallbackAudioId = "{MONITOR-OLED}" + } + ] + }; + _storage.LoadSettingsAsync(Arg.Any()).Returns(settings); + _provider.EnumerateRenderEndpoints().Returns( + [ + new AudioEndpointInfo("{PEBBLE-USB}", "Speakers (Pebble V3)", "Pebble V3", DevicePresenceState.NotPresent, false, false), + new AudioEndpointInfo("{MONITOR-OLED}", "MPG341CX OLED", "NVIDIA High Definition Audio", DevicePresenceState.Active, true, false) + ]); + + using var watchdog = new AudioEndpointWatchdogService(_provider, _director, _storage); + watchdog.Start(); + + _provider.DefaultDeviceChanged += Raise.Event>( + EDataFlow.eRender, ERole.eConsole, "{MONITOR-OLED}"); + + await Task.Delay(350); + + await _director.DidNotReceive().SetDefaultPlaybackEndpointAsync(Arg.Any(), Arg.Any()); + } + + [Fact] + public async Task WhenEnforcePrimaryAudioEnabled_AndPrimaryIsNotPresent_AndUnauthorizedSwitchOccurs_WatchdogRevertsToActiveFallback() + { + var settings = new UserSettings + { + EnforcePrimaryAudio = true, + ActiveAudioOutputMode = AudioOutputMode.Primary, + DeskPresets = + [ + new WorkstationPreset + { + PrimaryAudioId = "{PEBBLE-USB}", + SecondaryAudioId = "{SONAR}", + FallbackAudioId = "{MONITOR-OLED}" + } + ] + }; + _storage.LoadSettingsAsync(Arg.Any()).Returns(settings); + _provider.EnumerateRenderEndpoints().Returns( + [ + new AudioEndpointInfo("{PEBBLE-USB}", "Speakers (Pebble V3)", "Pebble V3", DevicePresenceState.NotPresent, false, false), + new AudioEndpointInfo("{SONAR}", "SteelSeries Sonar - Gaming", "SteelSeries Sonar", DevicePresenceState.Active, true, true), + new AudioEndpointInfo("{MONITOR-OLED}", "MPG341CX OLED", "NVIDIA High Definition Audio", DevicePresenceState.Active, false, false) + ]); + + using var watchdog = new AudioEndpointWatchdogService(_provider, _director, _storage); + watchdog.Start(); + + _provider.DefaultDeviceChanged += Raise.Event>( + EDataFlow.eRender, ERole.eConsole, "{SONAR}"); + + await Task.Delay(350); + + await _director.DidNotReceive().SetDefaultPlaybackEndpointAsync("{PEBBLE-USB}", Arg.Any()); + await _director.Received(1).SetDefaultPlaybackEndpointAsync("{MONITOR-OLED}", Arg.Any()); + } + + [Fact] + public async Task WhenDefaultSwitchesToBlacklistedDevice_AndPrimaryIsNotPresent_WatchdogRevertsToActiveFallback() + { + var settings = new UserSettings + { + BlacklistedAudioEndpointIds = ["{SHAKER-DAC}"], + ActiveAudioOutputMode = AudioOutputMode.Primary, + DeskPresets = + [ + new WorkstationPreset + { + PrimaryAudioId = "{PEBBLE-USB}", + FallbackAudioId = "{MONITOR-OLED}" + } + ] + }; + _storage.LoadSettingsAsync(Arg.Any()).Returns(settings); + _provider.EnumerateRenderEndpoints().Returns( + [ + new AudioEndpointInfo("{PEBBLE-USB}", "Speakers (Pebble V3)", "Pebble V3", DevicePresenceState.NotPresent, false, false), + new AudioEndpointInfo("{SHAKER-DAC}", "Chassis - Fosi BST-1", "USB Audio Adapter", DevicePresenceState.Active, true, false), + new AudioEndpointInfo("{MONITOR-OLED}", "MPG341CX OLED", "NVIDIA High Definition Audio", DevicePresenceState.Active, false, false) + ]); + + using var watchdog = new AudioEndpointWatchdogService(_provider, _director, _storage); + watchdog.Start(); + + _provider.DefaultDeviceChanged += Raise.Event>( + EDataFlow.eRender, ERole.eConsole, "{SHAKER-DAC}"); + + await Task.Delay(350); + + await _director.DidNotReceive().SetDefaultPlaybackEndpointAsync("{PEBBLE-USB}", Arg.Any()); + await _director.Received(1).SetDefaultPlaybackEndpointAsync("{MONITOR-OLED}", Arg.Any()); + } } + diff --git a/tests/RigSwitch.Tests.Unit/ProfileSwitchCoordinatorAudioToggleTests.cs b/tests/RigSwitch.Tests.Unit/ProfileSwitchCoordinatorAudioToggleTests.cs index fb1e626..0ddfa58 100644 --- a/tests/RigSwitch.Tests.Unit/ProfileSwitchCoordinatorAudioToggleTests.cs +++ b/tests/RigSwitch.Tests.Unit/ProfileSwitchCoordinatorAudioToggleTests.cs @@ -197,4 +197,46 @@ public async Task ToggleAudioOutputMode_WhenMicrophoneNotConfigured_DoesNotAlter await _audioDirector.Received(1).SetDefaultPlaybackEndpointAsync("{SONAR-HEADSET}", Arg.Any()); await _audioDirector.DidNotReceive().SetDefaultCaptureEndpointAsync(Arg.Any(), Arg.Any()); } + + [Fact] + public async Task SwitchProfile_WhenPrimaryIsNotPresent_NotifiesIntentionalSwitchWithResolvedFallback() + { + var settings = new UserSettings + { + ActiveAudioOutputMode = AudioOutputMode.Primary, + DeskPresets = + [ + new WorkstationPreset + { + PrimaryAudioId = "{PEBBLE-USB}", + FallbackAudioId = "{MONITOR-OLED}", + TargetMonitorIds = ["MONITOR-1"] + } + ] + }; + _storageService.LoadSettingsAsync(Arg.Any()).Returns(settings); + + _displayManager.EnumerateDisplaysAsync(Arg.Any()) + .Returns([new DisplayDeviceInfo("MONITOR-1", @"\\.\DISPLAY1", "OLED", "GPU", true, true)]); + + var endpoints = new List + { + new("{PEBBLE-USB}", "Pebble V3", "USB", DevicePresenceState.NotPresent, false, false, AudioDeviceFlow.Playback), + new("{MONITOR-OLED}", "MPG341CX OLED", "NVIDIA", DevicePresenceState.Active, false, false, AudioDeviceFlow.Playback) + }; + _audioDirector.EnumerateAudioEndpointsAsync(Arg.Any()).Returns(endpoints); + + var notifiedEndpoints = new List(); + var coordinator = new ProfileSwitchCoordinator( + _displayManager, + _audioDirector, + _storageService, + onIntentionalAudioSwitch: notifiedEndpoints.Add); + + await coordinator.SwitchProfileAsync(ProfileMode.Desk); + + Assert.Single(notifiedEndpoints); + Assert.Equal("{MONITOR-OLED}", notifiedEndpoints[0]); + } } + From 2a3a60d565bcb3336276048ff151799fefcd432c Mon Sep 17 00:00:00 2001 From: Steven Pelech Date: Tue, 13 Oct 2026 22:26:20 -0500 Subject: [PATCH 03/13] docs: add implementation plan for UI/topology/audio redesign --- .../2026-10-13-ui-topology-audio-redesign.md | 192 ++++++++++++++++++ 1 file changed, 192 insertions(+) create mode 100644 docs/superpowers/plans/2026-10-13-ui-topology-audio-redesign.md diff --git a/docs/superpowers/plans/2026-10-13-ui-topology-audio-redesign.md b/docs/superpowers/plans/2026-10-13-ui-topology-audio-redesign.md new file mode 100644 index 0000000..9b05f54 --- /dev/null +++ b/docs/superpowers/plans/2026-10-13-ui-topology-audio-redesign.md @@ -0,0 +1,192 @@ +# UI, Topology & Ranked Audio Redesign 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:** Per-preset sidebar pages with a 2D monitor topology canvas, ranked audio/mic priority lists, a "Relevant Devices" audio filter, a `+ Add Nickname` workflow, a larger default window and a visible version. + +**Architecture:** Extend `WorkstationPreset` with backward-compatible `MonitorPlacements`, `AudioPriorityIds`, `MicrophonePriorityIds`. Core services (`ProfileSwitchCoordinator`, `AudioEndpointWatchdogService`) resolve the first `Active` entry of the ranked list. The WPF layer gains per-preset page ViewModels; the monolithic XAML is split into per-page UserControls where new. + +**Tech Stack:** .NET / WPF (Fluent), xUnit, Windows CCD + CoreAudio P/Invoke. + +## Global Constraints + +- Spec: `docs/superpowers/specs/2026-10-13-ui-topology-audio-redesign-design.md` (source of truth). +- Default window `1240Γ—840`, `MinWidth=1040`, `MinHeight=680`. +- Version shown as `vX.Y.Z` in header and sidebar footer. +- Existing configs (`PrimaryAudioId/SecondaryAudioId/FallbackAudioId`, mic equivalents, `TargetMonitorIds`) must load and keep working (migration, no data loss). +- Audio page keeps both Fluent toggles per row: `Win Menu` (left) and `Exclude / Bass Shaker Lockout` (right). +- After every code change run: `dotnet build`, `dotnet test`, `npm run lint`, `npx tsc --noEmit`. +- Validate UI with `MainSettingsWindow.CaptureScreenshotAsync` + `view_file` before claiming done. +- Preserve unrelated comments/docstrings. + +--- + +### Task 1: Commit audio stutter fix (DONE) + +Committed as `733a987` on `fix/audio-stutter-watchdog`. + +--- + +### Task 2: Preset model β€” placements and ranked lists + +**Files:** +- Modify: `src/RigSwitch.Core/Models/WorkstationPreset.cs` +- Create: `src/RigSwitch.Core/Models/MonitorPlacement.cs` +- Modify: `src/RigSwitch.Core/Models/DisplayDeviceInfo.cs` (add `PositionX`, `PositionY`, `Width`, `Height`) +- Test: `tests/RigSwitch.Tests.Unit/WorkstationPresetRankingTests.cs` + +**Interfaces:** +- Produces: + - `public sealed record MonitorPlacement(string MonitorId, int X, int Y, bool IsPrimary, PresetHdrMode HdrMode)` + - `WorkstationPreset.MonitorPlacements : List` + - `WorkstationPreset.AudioPriorityIds : List`, `MicrophonePriorityIds : List` + - `IReadOnlyList WorkstationPreset.GetEffectiveAudioPriorityList()` / `GetEffectiveMicrophonePriorityList()` β€” returns the explicit list if non-empty, else `[Primary, Secondary, Fallback]` with blanks removed and case-insensitive de-dup. + - `DisplayDeviceInfo.PositionX/PositionY/Width/Height : int { get; init; }` + +- [ ] **Step 1: Write failing tests** + +```csharp +using RigSwitch.Core.Models; +using Xunit; + +namespace RigSwitch.Tests.Unit; + +public class WorkstationPresetRankingTests +{ + [Fact] + public void EffectiveAudioList_FallsBackToLegacyFields() + { + var p = new WorkstationPreset { PrimaryAudioId = "a", SecondaryAudioId = "", FallbackAudioId = "A" }; + Assert.Equal(new[] { "a" }, p.GetEffectiveAudioPriorityList()); + } + + [Fact] + public void EffectiveAudioList_PrefersExplicitList() + { + var p = new WorkstationPreset { PrimaryAudioId = "legacy", AudioPriorityIds = ["x", "y"] }; + Assert.Equal(new[] { "x", "y" }, p.GetEffectiveAudioPriorityList()); + } + + [Fact] + public void EffectiveMicList_FallsBackToLegacyFields() + { + var p = new WorkstationPreset { PrimaryMicrophoneId = "m1", FallbackMicrophoneId = "m2" }; + Assert.Equal(new[] { "m1", "m2" }, p.GetEffectiveMicrophonePriorityList()); + } +} +``` + +- [ ] **Step 2:** Run `dotnet test --filter WorkstationPresetRankingTests` β€” expect compile FAIL. +- [ ] **Step 3: Implement.** In `WorkstationPreset` add: + +```csharp +public List MonitorPlacements { get; set; } = []; +public List AudioPriorityIds { get; set; } = []; +public List MicrophonePriorityIds { get; set; } = []; + +public IReadOnlyList GetEffectiveAudioPriorityList() => + ResolveRanking(AudioPriorityIds, PrimaryAudioId, SecondaryAudioId, FallbackAudioId); + +public IReadOnlyList GetEffectiveMicrophonePriorityList() => + ResolveRanking(MicrophonePriorityIds, PrimaryMicrophoneId, SecondaryMicrophoneId, FallbackMicrophoneId); + +private static IReadOnlyList ResolveRanking(List explicitList, params string[] legacy) +{ + IEnumerable source = explicitList is { Count: > 0 } ? explicitList : legacy; + return source.Where(s => !string.IsNullOrWhiteSpace(s)) + .Distinct(StringComparer.OrdinalIgnoreCase) + .ToList(); +} +``` + +`MonitorPlacement.cs`: the record above in namespace `RigSwitch.Core.Models` (`using RigSwitch.Core.Enums;`). Add the four int props to `DisplayDeviceInfo`. +- [ ] **Step 4:** Re-run tests β€” PASS. Also verify existing config JSON deserialization tests still pass (`dotnet test`). +- [ ] **Step 5:** `git add -A; git commit -m "feat: add ranked audio lists and monitor placements to presets"` + +--- + +### Task 3: CCD positions β€” read, capture and apply placements + +**Files:** +- Modify: `src/RigSwitch.Infrastructure/Windows/Ccd/WindowsDisplayConfigurationService.cs` (populate `PositionX/Y/Width/Height` in `EnumerateDisplaysAsync`; apply `MonitorPlacements` positions in `ApplyDisplayTopologyAsync`, falling back to current behaviour when empty) +- Modify: `src/RigSwitch.Core/Services/ProfileSwitchCoordinator.cs` (pass preset placements to topology apply) +- Modify: `IDisplayConfigurationService` (add optional `IReadOnlyList? placements = null` parameter; update fakes in tests) +- Test: `tests/RigSwitch.Tests.Unit/ProfileSwitchCoordinatorPlacementTests.cs` + +**Interfaces:** +- Consumes: Task 2 `MonitorPlacements`. +- Produces: `ApplyDisplayTopologyAsync(IReadOnlyList monitorIds, string primaryId, IReadOnlyList? placements, CancellationToken ct)` (match the existing signature's naming when editing; only append `placements`). + +- [ ] **Step 1:** Write a test with the existing fake display service asserting that switching to a preset with two `MonitorPlacements` forwards them (record the argument on the fake) and that a legacy preset forwards `null`/empty. +- [ ] **Step 2:** Run it, expect FAIL (compile). +- [ ] **Step 3:** Implement parameter plumbing in interface, Windows service, coordinator and all test fakes. In the Windows service, after cloning modes, for each placement matching a target `monitorId` set `sourceMode.position = new POINTL { x = p.X, y = p.Y }`; the primary placement must be normalized to (0,0) by shifting all others by its offset. +- [ ] **Step 4:** `dotnet test` PASS. +- [ ] **Step 5:** Commit `feat: apply per-preset monitor placements via CCD`. + +--- + +### Task 4: Ranked audio routing in coordinator and watchdog + +**Files:** +- Modify: `src/RigSwitch.Core/Services/ProfileSwitchCoordinator.cs` (resolve route target and `ToggleAudioOutputModeAsync` cycle) +- Modify: `src/RigSwitch.Infrastructure/Windows/CoreAudio/AudioEndpointWatchdogService.cs` (`ResolveEffectiveTargetEndpoint` uses ranked list) +- Test: extend `tests/RigSwitch.Tests.Unit/AudioEndpointWatchdogServiceTests.cs`, `ProfileSwitchCoordinatorAudioToggleTests.cs` + +**Interfaces:** +- Consumes: `GetEffectiveAudioPriorityList()`, `GetEffectiveMicrophonePriorityList()`. +- Produces: behaviour β€” first `Active`, non-blacklisted endpoint in rank wins; toggle selects the next `Active` endpoint after the current default (wrapping); if ≀1 active, no-op. + +- [ ] **Step 1:** Add failing tests: (a) `AudioPriorityIds = [A(NotPresent), B(Active), C(Active)]` β†’ watchdog and switch target B; (b) toggle with default=B moves to C, then back to B; (c) blacklisted top entry skipped. +- [ ] **Step 2:** Run filtered tests β€” expect FAIL. +- [ ] **Step 3:** Replace the Primary/Secondary/Fallback walk in both services with iteration over the effective list (reuse existing `IsEndpointAvailable`). Keep `onIntentionalAudioSwitch` invocation before every set-default call. Apply the same logic to microphones. +- [ ] **Step 4:** `dotnet test` PASS (all existing tests included). +- [ ] **Step 5:** Commit `feat: route audio and mic by ranked priority list`. + +--- + +### Task 5: ViewModel layer + +**Files:** +- Modify: `src/RigSwitch.App/ViewModels/MainSettingsViewModel.cs`, `PresetConfigurationItemViewModel.cs`, `DeviceOptionResolver` (in `src/RigSwitch.App/ViewModels/`) +- Create: `src/RigSwitch.App/ViewModels/PresetMonitorCanvasItemViewModel.cs`, `RankedAudioItemViewModel.cs`, `NicknameItemViewModel.cs` +- Test: `tests/RigSwitch.Tests.Unit/MainSettingsViewModelRedesignTests.cs` + +**Interfaces (Produces):** +- `MainSettingsViewModel`: `string AppVersionText` (`"v" + assembly InformationalVersion` trimmed of `+hash`), `PresetConfigurationItemViewModel? SelectedPreset`, `bool IsPresetViewSelected`, `NavigateToPresetCommand(PresetConfigurationItemViewModel)`, `AudioDeviceFilter` enum `{ Relevant, All }` + `ShowAllRegistryGhosts` toggle, `ObservableCollection ConfiguredNicknames`, `ObservableCollection UnnicknamedDeviceOptions`, `AddNicknameCommand`, `RemoveNicknameCommand`. +- `PresetConfigurationItemViewModel`: `ObservableCollection StageMonitors`, `ObservableCollection UnassignedMonitors`, commands `AddMonitorToStage`, `RemoveMonitorFromStage`, `SetPrimary`, `CycleHdr`, `CaptureWindowsLayoutCommand`, `MoveMonitor(double x, double y)` (snaps edges within 24 px); `ObservableCollection AudioRanking` and `MicrophoneRanking` with `MoveUp/MoveDown/Remove`, `AddAudioCommand(DeviceOption)`, and write-back to `AudioPriorityIds` / `MicrophonePriorityIds` / `MonitorPlacements` / `TargetMonitorIds` on save. +- `RankedAudioItemViewModel`: `Rank`, `DisplayName`, `Status` (`Active Now`, `Ready`, `Offline`). +- Relevant filter rule: show `Active`, `Disabled`, `Unplugged`, plus any `NotPresent` referenced by a preset ranking, blacklist or nickname. + +- [ ] **Step 1:** Write failing tests, one per rule: relevant filter hides unreferenced `NotPresent` but keeps one referenced by a nickname; `UnnicknamedDeviceOptions` excludes already-nicknamed devices; `MoveUp` on rank 2 swaps and persists to `AudioPriorityIds`; `RemoveMonitorFromStage` moves the monitor to `UnassignedMonitors` and drops its placement; `SetPrimary` normalizes the primary to (0,0); `MoveMonitor` snaps to a neighbour's edge; `AppVersionText` matches `^v\d+\.\d+\.\d+`. +- [ ] **Step 2:** Run β€” expect FAIL. +- [ ] **Step 3:** Implement the ViewModels (use the existing `RelayCommand` / observable base the project already uses in `MainSettingsViewModel`). Replace legacy per-preset Primary/Secondary/Fallback dropdown properties on the UI side only; the model keeps legacy fields for compatibility, and on save write `Primary/Secondary/Fallback` from the first three ranking entries. +- [ ] **Step 4:** `dotnet test` PASS. +- [ ] **Step 5:** Commit `feat: viewmodels for preset pages, ranking, topology canvas and nicknames`. + +--- + +### Task 6: XAML β€” window, sidebar, preset page, audio and nickname pages + +**Files:** +- Modify: `src/RigSwitch.App/Views/MainSettingsWindow.xaml` and `.xaml.cs` +- Create: `src/RigSwitch.App/Views/PresetPageView.xaml/.cs` (monitor stage + tray + rankings), optionally `MonitorStageControl.cs` for drag/snap hit-testing +- Test: `tests/RigSwitch.Tests.Unit/UiScreenshotCaptureTests.cs` (add per-view captures) + +- [ ] **Step 1:** Add failing screenshot test assertions: window `Width==1240`, `Height==840`, `MinWidth==1040`, `MinHeight==680`; version text element present (`AutomationId="AppVersionBadge"`) in header. +- [ ] **Step 2:** Run β€” expect FAIL. +- [ ] **Step 3:** Implement: + - Window sizes and version badge (header and sidebar footer bound to `AppVersionText`). + - Remove `Presets`, `Displays & Topology` and `Hardware Telemetry Summary` tabs; add sidebar groups `Desk 1..3` and `Sim Rig 1..3` bound to `NavigateToPresetCommand`. + - `PresetPageView`: Canvas stage (monitors as draggable `Border` with Thumb drag β†’ `MoveMonitor`), per-monitor buttons `β˜… Primary (0,0)`, HDR cycle, `βœ•`; slim "Off in Preset" tray with click/drag-to-stage; `πŸ” Identify`, `πŸ“Έ Capture Windows Layout`; ranked audio/mic cards with `#n`, status pill, `↑ ↓ βœ•`, `+ Add device` dropdown. + - Audio page: `Relevant Devices` / `All Registry Ghosts` filter bar; keep both Fluent toggles per row. + - Nicknames page: `+ Add New Device Nickname` bar (dropdown of `UnnicknamedDeviceOptions`), list of configured nicknames with inline edit and `βœ•`. +- [ ] **Step 4:** Build, run tests β€” PASS. +- [ ] **Step 5:** Commit `feat: redesigned settings window with per-preset pages`. + +--- + +### Task 7: Visual validation, checks and PR + +- [ ] **Step 1:** Run screenshot capture for views: `Desk 1`, `Sim Rig 1`, `Audio & DAC Lockout`, `Device Nicknames`, at default size and at `MinWidthΓ—MinHeight`. `view_file` each PNG; fix clipping or cramped layout, re-capture. +- [ ] **Step 2:** `dotnet build`, `dotnet test`, `npm run lint`, `npx tsc --noEmit` β€” all clean. +- [ ] **Step 3:** `git push -u origin fix/audio-stutter-watchdog`; open PR via `gh pr create` summarising stutter fix + redesign, attaching screenshots. From 42a2cc3a9cd7887a4036e5f893a5f8b94acf5450 Mon Sep 17 00:00:00 2001 From: Steven Pelech Date: Thu, 15 Oct 2026 13:38:41 -0500 Subject: [PATCH 04/13] feat: add ranked audio lists and monitor placements to presets --- .../Models/DisplayDeviceInfo.cs | 30 +++++++- src/RigSwitch.Core/Models/MonitorPlacement.cs | 72 +++++++++++++++++++ .../Models/WorkstationPreset.cs | 61 ++++++++++++++++ .../WorkstationPresetRankingTests.cs | 58 +++++++++++++++ 4 files changed, 220 insertions(+), 1 deletion(-) create mode 100644 src/RigSwitch.Core/Models/MonitorPlacement.cs create mode 100644 tests/RigSwitch.Tests.Unit/WorkstationPresetRankingTests.cs diff --git a/src/RigSwitch.Core/Models/DisplayDeviceInfo.cs b/src/RigSwitch.Core/Models/DisplayDeviceInfo.cs index 85c1f58..9a29882 100644 --- a/src/RigSwitch.Core/Models/DisplayDeviceInfo.cs +++ b/src/RigSwitch.Core/Models/DisplayDeviceInfo.cs @@ -31,7 +31,11 @@ public DisplayDeviceInfo( bool isActive, bool isPrimary, bool supportsHdr = false, - bool isHdrEnabled = false) + bool isHdrEnabled = false, + int positionX = 0, + int positionY = 0, + int width = 1920, + int height = 1080) { MonitorId = monitorId; DevicePath = devicePath; @@ -41,6 +45,10 @@ public DisplayDeviceInfo( IsPrimary = isPrimary; SupportsHdr = supportsHdr; IsHdrEnabled = isHdrEnabled; + PositionX = positionX; + PositionY = positionY; + Width = width > 0 ? width : 1920; + Height = height > 0 ? height : 1080; } /// @@ -83,6 +91,26 @@ public DisplayDeviceInfo( /// public bool IsHdrEnabled { get; init; } + /// + /// Gets the horizontal desktop position coordinate in pixels. + /// + public int PositionX { get; init; } + + /// + /// Gets the vertical desktop position coordinate in pixels. + /// + public int PositionY { get; init; } + + /// + /// Gets the display horizontal resolution width in pixels. + /// + public int Width { get; init; } = 1920; + + /// + /// Gets the display vertical resolution height in pixels. + /// + public int Height { get; init; } = 1080; + /// /// Checks whether this display device matches the specified monitor identifier, device path, or friendly name. /// diff --git a/src/RigSwitch.Core/Models/MonitorPlacement.cs b/src/RigSwitch.Core/Models/MonitorPlacement.cs new file mode 100644 index 0000000..6ce8ecf --- /dev/null +++ b/src/RigSwitch.Core/Models/MonitorPlacement.cs @@ -0,0 +1,72 @@ +namespace RigSwitch.Core.Models; + +using RigSwitch.Core.Enums; + +/// +/// Represents the spatial 2D coordinate placement, resolution, primary flag, and HDR mode for a monitor within a preset. +/// +public sealed record MonitorPlacement +{ + /// + /// Initializes a new instance of the record. + /// + public MonitorPlacement() + { + } + + /// + /// Initializes a new instance of the record with specified placement details. + /// + public MonitorPlacement( + string monitorId, + int positionX = 0, + int positionY = 0, + int width = 1920, + int height = 1080, + bool isPrimary = false, + PresetHdrMode hdrMode = PresetHdrMode.Retain) + { + MonitorId = monitorId ?? string.Empty; + PositionX = positionX; + PositionY = positionY; + Width = width > 0 ? width : 1920; + Height = height > 0 ? height : 1080; + IsPrimary = isPrimary; + HdrMode = hdrMode; + } + + /// + /// Gets or sets the EDID or hardware monitor identifier. + /// + public string MonitorId { get; set; } = string.Empty; + + /// + /// Gets or sets the horizontal desktop coordinate in pixels. + /// + public int PositionX { get; set; } + + /// + /// Gets or sets the vertical desktop coordinate in pixels. + /// + public int PositionY { get; set; } + + /// + /// Gets or sets the horizontal resolution width in pixels. + /// + public int Width { get; set; } = 1920; + + /// + /// Gets or sets the vertical resolution height in pixels. + /// + public int Height { get; set; } = 1080; + + /// + /// Gets or sets a value indicating whether this monitor is designated as the primary display at (0,0). + /// + public bool IsPrimary { get; set; } + + /// + /// Gets or sets the HDR mode configured for this monitor in the preset. + /// + public PresetHdrMode HdrMode { get; set; } = PresetHdrMode.Retain; +} diff --git a/src/RigSwitch.Core/Models/WorkstationPreset.cs b/src/RigSwitch.Core/Models/WorkstationPreset.cs index fd9193d..8c6a731 100644 --- a/src/RigSwitch.Core/Models/WorkstationPreset.cs +++ b/src/RigSwitch.Core/Models/WorkstationPreset.cs @@ -58,6 +58,21 @@ public string TargetMonitorId } } + /// + /// Gets or sets the spatial 2D placements for monitors enabled in this preset. + /// + public List MonitorPlacements { get; set; } = []; + + /// + /// Gets or sets the ordered priority list of playback audio endpoint device identifiers. + /// + public List AudioPriorityIds { get; set; } = []; + + /// + /// Gets or sets the ordered priority list of microphone / capture endpoint device identifiers. + /// + public List MicrophonePriorityIds { get; set; } = []; + /// /// Gets or sets the primary audio endpoint device identifier. /// @@ -117,5 +132,51 @@ public string TargetMonitorId /// Gets or sets application lifecycle hooks configured for this preset. /// public List ApplicationHooks { get; set; } = []; + + /// + /// Returns the ordered list of preferred playback audio endpoint identifiers, falling back to legacy Primary/Secondary/Fallback fields when is empty. + /// + public IReadOnlyList GetEffectiveAudioPriorityList() => + ResolveRanking(AudioPriorityIds, PrimaryAudioId, SecondaryAudioId, FallbackAudioId); + + /// + /// Returns the ordered list of preferred microphone endpoint identifiers, falling back to legacy Primary/Secondary/Fallback fields when is empty. + /// + public IReadOnlyList GetEffectiveMicrophonePriorityList() => + ResolveRanking(MicrophonePriorityIds, PrimaryMicrophoneId, SecondaryMicrophoneId, FallbackMicrophoneId); + + /// + /// Synchronizes the legacy , , and fields from . + /// + public void SyncLegacyAudioFieldsFromPriorityList() + { + var list = GetEffectiveAudioPriorityList(); + AudioPriorityIds = [.. list]; + PrimaryAudioId = list.Count > 0 ? list[0] : string.Empty; + SecondaryAudioId = list.Count > 1 ? list[1] : string.Empty; + FallbackAudioId = list.Count > 2 ? list[2] : string.Empty; + } + + /// + /// Synchronizes the legacy , , and fields from . + /// + public void SyncLegacyMicrophoneFieldsFromPriorityList() + { + var list = GetEffectiveMicrophonePriorityList(); + MicrophonePriorityIds = [.. list]; + PrimaryMicrophoneId = list.Count > 0 ? list[0] : string.Empty; + SecondaryMicrophoneId = list.Count > 1 ? list[1] : string.Empty; + FallbackMicrophoneId = list.Count > 2 ? list[2] : string.Empty; + } + + private static List ResolveRanking(List? explicitList, params string?[] legacy) + { + IEnumerable source = explicitList is { Count: > 0 } ? explicitList : legacy; + return source + .Where(s => !string.IsNullOrWhiteSpace(s)) + .Select(s => s!.Trim()) + .Distinct(StringComparer.OrdinalIgnoreCase) + .ToList(); + } } diff --git a/tests/RigSwitch.Tests.Unit/WorkstationPresetRankingTests.cs b/tests/RigSwitch.Tests.Unit/WorkstationPresetRankingTests.cs new file mode 100644 index 0000000..e27fb52 --- /dev/null +++ b/tests/RigSwitch.Tests.Unit/WorkstationPresetRankingTests.cs @@ -0,0 +1,58 @@ +using RigSwitch.Core.Enums; +using RigSwitch.Core.Models; +using Xunit; + +namespace RigSwitch.Tests.Unit; + +public class WorkstationPresetRankingTests +{ + private static readonly string[] ExpectedFallbackAudio = ["a"]; + private static readonly string[] ExpectedExplicitAudio = ["x", "y"]; + private static readonly string[] ExpectedFallbackMic = ["m1", "m2"]; + + [Fact] + public void EffectiveAudioList_FallsBackToLegacyFields() + { + var p = new WorkstationPreset { PrimaryAudioId = "a", SecondaryAudioId = "", FallbackAudioId = "A" }; + Assert.Equal(ExpectedFallbackAudio, p.GetEffectiveAudioPriorityList()); + } + + [Fact] + public void EffectiveAudioList_PrefersExplicitList() + { + var p = new WorkstationPreset { PrimaryAudioId = "legacy", AudioPriorityIds = ["x", "y"] }; + Assert.Equal(ExpectedExplicitAudio, p.GetEffectiveAudioPriorityList()); + } + + [Fact] + public void EffectiveMicList_FallsBackToLegacyFields() + { + var p = new WorkstationPreset { PrimaryMicrophoneId = "m1", FallbackMicrophoneId = "m2" }; + Assert.Equal(ExpectedFallbackMic, p.GetEffectiveMicrophonePriorityList()); + } + + [Fact] + public void SyncLegacyAudioFieldsFromPriorityList_UpdatesLegacyProperties() + { + var p = new WorkstationPreset { AudioPriorityIds = ["dev1", "dev2", "dev3", "dev4"] }; + p.SyncLegacyAudioFieldsFromPriorityList(); + + Assert.Equal("dev1", p.PrimaryAudioId); + Assert.Equal("dev2", p.SecondaryAudioId); + Assert.Equal("dev3", p.FallbackAudioId); + } + + [Fact] + public void MonitorPlacement_StoresPositionResolutionPrimaryAndHdrMode() + { + var placement = new MonitorPlacement("MSI4DD0", -3440, 0, 3440, 1440, true, PresetHdrMode.Enable); + + Assert.Equal("MSI4DD0", placement.MonitorId); + Assert.Equal(-3440, placement.PositionX); + Assert.Equal(0, placement.PositionY); + Assert.Equal(3440, placement.Width); + Assert.Equal(1440, placement.Height); + Assert.True(placement.IsPrimary); + Assert.Equal(PresetHdrMode.Enable, placement.HdrMode); + } +} From b497f55fabb71d6c56a1a62c20ae666f22ad6185 Mon Sep 17 00:00:00 2001 From: Steven Pelech Date: Thu, 15 Oct 2026 13:42:01 -0500 Subject: [PATCH 05/13] feat: apply per-preset monitor placements via CCD and route audio by ranked priority list --- .../IDisplayConfigurationService.cs | 15 ++ .../Services/ProfileSwitchCoordinator.cs | 174 +++++++++++++++--- .../Ccd/WindowsDisplayConfigurationService.cs | 67 ++++++- .../CoreAudio/AudioEndpointWatchdogService.cs | 13 ++ ...rofileSwitchCoordinatorAudioToggleTests.cs | 72 ++++++++ 5 files changed, 311 insertions(+), 30 deletions(-) diff --git a/src/RigSwitch.Core/Interfaces/IDisplayConfigurationService.cs b/src/RigSwitch.Core/Interfaces/IDisplayConfigurationService.cs index 82baa7c..da9176d 100644 --- a/src/RigSwitch.Core/Interfaces/IDisplayConfigurationService.cs +++ b/src/RigSwitch.Core/Interfaces/IDisplayConfigurationService.cs @@ -23,6 +23,21 @@ public interface IDisplayConfigurationService /// A task representing the asynchronous operation. Task ApplyDisplayTopologyAsync(IReadOnlyList targetMonitorIds, IReadOnlyList? inactiveMonitorIds = null, CancellationToken cancellationToken = default); + /// + /// Applies a display topology with optional explicit 2D monitor coordinate placements. + /// + /// The list of hardware/EDID identifiers of monitors to activate. + /// The optional list of hardware/EDID identifiers of monitors to disable. + /// Optional 2D coordinate placements for each target monitor. + /// A cancellation token that can be used to cancel the asynchronous operation. + /// A task representing the asynchronous operation. + Task ApplyDisplayTopologyAsync( + IReadOnlyList targetMonitorIds, + IReadOnlyList? inactiveMonitorIds, + IReadOnlyList? placements, + CancellationToken cancellationToken = default) => + ApplyDisplayTopologyAsync(targetMonitorIds, inactiveMonitorIds, cancellationToken); + /// /// Applies a single-display topology, activating the specified target display as primary and disabling the inactive display. /// diff --git a/src/RigSwitch.Core/Services/ProfileSwitchCoordinator.cs b/src/RigSwitch.Core/Services/ProfileSwitchCoordinator.cs index 7e82758..bb11e4b 100644 --- a/src/RigSwitch.Core/Services/ProfileSwitchCoordinator.cs +++ b/src/RigSwitch.Core/Services/ProfileSwitchCoordinator.cs @@ -115,21 +115,39 @@ public async Task ToggleAudioOutputModeAsync(CancellationToken var playbackEndpoints = allowedEndpoints.Where(e => e.Flow == AudioDeviceFlow.Playback).ToList(); var captureEndpoints = allowedEndpoints.Where(e => e.Flow == AudioDeviceFlow.Capture).ToList(); - var targetAudioId = newMode == AudioOutputMode.Secondary && !string.IsNullOrWhiteSpace(preset.SecondaryAudioId) - ? preset.SecondaryAudioId - : preset.PrimaryAudioId; - var targetMicId = newMode == AudioOutputMode.Secondary && !string.IsNullOrWhiteSpace(preset.SecondaryMicrophoneId) - ? preset.SecondaryMicrophoneId - : preset.PrimaryMicrophoneId; - - var resolvedAudioId = ResolveAudioEndpoint(targetAudioId, preset.FallbackAudioId, playbackEndpoints, blacklisted); + string? resolvedAudioId; + string? resolvedMicId; + + if (preset.AudioPriorityIds is { Count: > 0 }) + { + resolvedAudioId = ResolveNextCycledRankedEndpoint(preset.AudioPriorityIds, playbackEndpoints, blacklisted, isPlayback: true); + } + else + { + var targetAudioId = newMode == AudioOutputMode.Secondary && !string.IsNullOrWhiteSpace(preset.SecondaryAudioId) + ? preset.SecondaryAudioId + : preset.PrimaryAudioId; + resolvedAudioId = ResolveAudioEndpoint(targetAudioId, preset.FallbackAudioId, playbackEndpoints, blacklisted); + } + + if (preset.MicrophonePriorityIds is { Count: > 0 }) + { + resolvedMicId = ResolveNextCycledRankedEndpoint(preset.MicrophonePriorityIds, captureEndpoints, blacklisted, isPlayback: false); + } + else + { + var targetMicId = newMode == AudioOutputMode.Secondary && !string.IsNullOrWhiteSpace(preset.SecondaryMicrophoneId) + ? preset.SecondaryMicrophoneId + : preset.PrimaryMicrophoneId; + resolvedMicId = ResolveAudioEndpoint(targetMicId, preset.FallbackMicrophoneId, captureEndpoints, blacklisted); + } + if (!string.IsNullOrWhiteSpace(resolvedAudioId)) { _onIntentionalAudioSwitch?.Invoke(resolvedAudioId); await _audioDirector.SetDefaultPlaybackEndpointAsync(resolvedAudioId, cancellationToken).ConfigureAwait(false); } - var resolvedMicId = ResolveAudioEndpoint(targetMicId, preset.FallbackMicrophoneId, captureEndpoints, blacklisted); if (!string.IsNullOrWhiteSpace(resolvedMicId)) { await _audioDirector.SetDefaultCaptureEndpointAsync(resolvedMicId, cancellationToken).ConfigureAwait(false); @@ -184,6 +202,16 @@ private async Task SwitchCoreAsync(ProfileMode targetProfile, int? targetP var inactiveMonitorIds = inactivePreset.TargetMonitorIds; var targetMonitorIds = preset.TargetMonitorIds.Where(id => !string.IsNullOrWhiteSpace(id)).ToList(); + if (targetMonitorIds.Count == 0 && preset.MonitorPlacements is { Count: > 0 }) + { + var orderedPlacements = preset.MonitorPlacements + .OrderByDescending(p => p.IsPrimary) + .Where(p => !string.IsNullOrWhiteSpace(p.MonitorId)) + .Select(p => p.MonitorId) + .Distinct(StringComparer.OrdinalIgnoreCase) + .ToList(); + targetMonitorIds = orderedPlacements; + } // Step 2: Safety Gate (Reachability Verification) if (targetMonitorIds.Count == 0) @@ -204,14 +232,26 @@ private async Task SwitchCoreAsync(ProfileMode targetProfile, int? targetP } // Step 3: Apply Display Topology - await _displayConfigService.ApplyDisplayTopologyAsync(targetMonitorIds, inactiveMonitorIds, cancellationToken).ConfigureAwait(false); + if (preset.MonitorPlacements is { Count: > 0 }) + { + await _displayConfigService.ApplyDisplayTopologyAsync(targetMonitorIds, inactiveMonitorIds, preset.MonitorPlacements, cancellationToken).ConfigureAwait(false); + } + else + { + await _displayConfigService.ApplyDisplayTopologyAsync(targetMonitorIds, inactiveMonitorIds, cancellationToken).ConfigureAwait(false); + } - // Step 3B: Apply Native HDR Mode (if configured) - if (preset.HdrMode != PresetHdrMode.Retain) + // Step 3B: Apply Native HDR Mode (per-monitor placement or preset-level) + foreach (var monitorId in targetMonitorIds) { - bool enableHdr = preset.HdrMode == PresetHdrMode.Enable; - foreach (var monitorId in targetMonitorIds) + var placementHdr = preset.MonitorPlacements?.FirstOrDefault(p => string.Equals(p.MonitorId, monitorId, StringComparison.OrdinalIgnoreCase))?.HdrMode; + var effectiveHdrMode = placementHdr is not null && placementHdr != PresetHdrMode.Retain + ? placementHdr.Value + : preset.HdrMode; + + if (effectiveHdrMode != PresetHdrMode.Retain) { + bool enableHdr = effectiveHdrMode == PresetHdrMode.Enable; try { await _displayConfigService.SetHdrStateAsync(monitorId, enableHdr, cancellationToken).ConfigureAwait(false); @@ -222,12 +262,12 @@ private async Task SwitchCoreAsync(ProfileMode targetProfile, int? targetP } catch (Exception ex) { - System.Diagnostics.Trace.TraceWarning($"Failed to apply HDR mode ({preset.HdrMode}) on monitor '{monitorId}': {ex.Message}"); + System.Diagnostics.Trace.TraceWarning($"Failed to apply HDR mode ({effectiveHdrMode}) on monitor '{monitorId}': {ex.Message}"); } } } - // Step 4: Multi-tier Audio Resolution & Routing + // Step 4: Multi-tier / Ranked Audio Resolution & Routing var endpoints = await _audioDirector.EnumerateAudioEndpointsAsync(cancellationToken).ConfigureAwait(false); var endpointList = endpoints as IList ?? endpoints.ToList(); var blacklisted = settings.BlacklistedAudioEndpointIds ?? []; @@ -235,21 +275,38 @@ private async Task SwitchCoreAsync(ProfileMode targetProfile, int? targetP var playbackEndpoints = allowedEndpoints.Where(e => e.Flow == AudioDeviceFlow.Playback).ToList(); var captureEndpoints = allowedEndpoints.Where(e => e.Flow == AudioDeviceFlow.Capture).ToList(); - var targetAudioId = settings.ActiveAudioOutputMode == AudioOutputMode.Secondary && !string.IsNullOrWhiteSpace(preset.SecondaryAudioId) - ? preset.SecondaryAudioId - : preset.PrimaryAudioId; - var targetMicId = settings.ActiveAudioOutputMode == AudioOutputMode.Secondary && !string.IsNullOrWhiteSpace(preset.SecondaryMicrophoneId) - ? preset.SecondaryMicrophoneId - : preset.PrimaryMicrophoneId; + string? resolvedAudioId; + if (preset.AudioPriorityIds is { Count: > 0 }) + { + resolvedAudioId = ResolveRankedAudioEndpoint(preset.AudioPriorityIds, playbackEndpoints, blacklisted); + } + else + { + var targetAudioId = settings.ActiveAudioOutputMode == AudioOutputMode.Secondary && !string.IsNullOrWhiteSpace(preset.SecondaryAudioId) + ? preset.SecondaryAudioId + : preset.PrimaryAudioId; + resolvedAudioId = ResolveAudioEndpoint(targetAudioId, preset.FallbackAudioId, playbackEndpoints, blacklisted); + } - var resolvedAudioId = ResolveAudioEndpoint(targetAudioId, preset.FallbackAudioId, playbackEndpoints, blacklisted); if (!string.IsNullOrWhiteSpace(resolvedAudioId)) { _onIntentionalAudioSwitch?.Invoke(resolvedAudioId); await _audioDirector.SetDefaultPlaybackEndpointAsync(resolvedAudioId, cancellationToken).ConfigureAwait(false); } - var resolvedMicId = ResolveAudioEndpoint(targetMicId, preset.FallbackMicrophoneId, captureEndpoints, blacklisted); + string? resolvedMicId; + if (preset.MicrophonePriorityIds is { Count: > 0 }) + { + resolvedMicId = ResolveRankedAudioEndpoint(preset.MicrophonePriorityIds, captureEndpoints, blacklisted); + } + else + { + var targetMicId = settings.ActiveAudioOutputMode == AudioOutputMode.Secondary && !string.IsNullOrWhiteSpace(preset.SecondaryMicrophoneId) + ? preset.SecondaryMicrophoneId + : preset.PrimaryMicrophoneId; + resolvedMicId = ResolveAudioEndpoint(targetMicId, preset.FallbackMicrophoneId, captureEndpoints, blacklisted); + } + if (!string.IsNullOrWhiteSpace(resolvedMicId)) { await _audioDirector.SetDefaultCaptureEndpointAsync(resolvedMicId, cancellationToken).ConfigureAwait(false); @@ -390,6 +447,75 @@ await _audioDirector.SetEndpointVolumeAsync( } } + private static string? ResolveRankedAudioEndpoint( + IReadOnlyList rankedIds, + IList allowedEndpoints, + IReadOnlyList? blacklisted = null) + { + foreach (var candidateId in rankedIds) + { + if (string.IsNullOrWhiteSpace(candidateId)) + { + continue; + } + + if (blacklisted?.Any(b => MatchesEndpoint(b, candidateId)) == true) + { + continue; + } + + var activeMatch = allowedEndpoints.FirstOrDefault(e => MatchesEndpoint(e.Id, candidateId) && e.State == DevicePresenceState.Active); + if (activeMatch != null) + { + return activeMatch.Id; + } + } + + var firstActive = allowedEndpoints.FirstOrDefault(e => e.State == DevicePresenceState.Active); + return firstActive?.Id; + } + + private static string? ResolveNextCycledRankedEndpoint( + IReadOnlyList rankedIds, + IList allowedEndpoints, + IReadOnlyList? blacklisted, + bool isPlayback) + { + var activeRanked = new List(); + foreach (var candidateId in rankedIds) + { + if (string.IsNullOrWhiteSpace(candidateId)) + { + continue; + } + + if (blacklisted?.Any(b => MatchesEndpoint(b, candidateId)) == true) + { + continue; + } + + var match = allowedEndpoints.FirstOrDefault(e => MatchesEndpoint(e.Id, candidateId) && e.State == DevicePresenceState.Active); + if (match != null && !activeRanked.Any(x => MatchesEndpoint(x.Id, match.Id))) + { + activeRanked.Add(match); + } + } + + if (activeRanked.Count == 0) + { + return null; + } + + if (activeRanked.Count == 1) + { + return activeRanked[0].Id; + } + + int currentIdx = activeRanked.FindIndex(e => isPlayback ? e.IsDefaultPlayback : e.IsDefaultCapture); + int nextIdx = currentIdx >= 0 ? (currentIdx + 1) % activeRanked.Count : 0; + return activeRanked[nextIdx].Id; + } + private static string? ResolveAudioEndpoint( string? primaryAudioId, string? fallbackAudioId, diff --git a/src/RigSwitch.Infrastructure/Windows/Ccd/WindowsDisplayConfigurationService.cs b/src/RigSwitch.Infrastructure/Windows/Ccd/WindowsDisplayConfigurationService.cs index d527f82..bf7592c 100644 --- a/src/RigSwitch.Infrastructure/Windows/Ccd/WindowsDisplayConfigurationService.cs +++ b/src/RigSwitch.Infrastructure/Windows/Ccd/WindowsDisplayConfigurationService.cs @@ -63,6 +63,10 @@ public Task> EnumerateDisplaysAsync(Cancellatio bool isPathActive = (path.flags & NativeCcdApi.DISPLAYCONFIG_PATH_ACTIVE) != 0; bool isPathPrimary = false; + int posX = 0; + int posY = 0; + int width = 1920; + int height = 1080; if (isPathActive && path.sourceInfo.modeInfoIdx != NativeCcdApi.DISPLAYCONFIG_PATH_MODE_IDX_INVALID && @@ -71,8 +75,19 @@ public Task> EnumerateDisplaysAsync(Cancellatio var mode = modes[path.sourceInfo.modeInfoIdx]; if (mode.infoType == DISPLAYCONFIG_MODE_INFO_TYPE.DISPLAYCONFIG_MODE_INFO_TYPE_SOURCE) { - isPathPrimary = mode.modeInfo.sourceMode.position.x == 0 && - mode.modeInfo.sourceMode.position.y == 0; + posX = mode.modeInfo.sourceMode.position.x; + posY = mode.modeInfo.sourceMode.position.y; + if (mode.modeInfo.sourceMode.width > 0) + { + width = (int)mode.modeInfo.sourceMode.width; + } + + if (mode.modeInfo.sourceMode.height > 0) + { + height = (int)mode.modeInfo.sourceMode.height; + } + + isPathPrimary = posX == 0 && posY == 0; } } @@ -111,7 +126,11 @@ public Task> EnumerateDisplaysAsync(Cancellatio isActive: existing.IsActive || isPathActive, isPrimary: existing.IsPrimary || isPathPrimary, supportsHdr: existing.SupportsHdr || supportsHdr, - isHdrEnabled: existing.IsHdrEnabled || isHdrEnabled); + isHdrEnabled: existing.IsHdrEnabled || isHdrEnabled, + positionX: isPathActive ? posX : existing.PositionX, + positionY: isPathActive ? posY : existing.PositionY, + width: isPathActive ? width : existing.Width, + height: isPathActive ? height : existing.Height); } else { @@ -123,7 +142,11 @@ public Task> EnumerateDisplaysAsync(Cancellatio isActive: isPathActive, isPrimary: isPathPrimary, supportsHdr: supportsHdr, - isHdrEnabled: isHdrEnabled); + isHdrEnabled: isHdrEnabled, + positionX: posX, + positionY: posY, + width: width, + height: height); } } @@ -135,6 +158,14 @@ public Task> EnumerateDisplaysAsync(Cancellatio public Task ApplyDisplayTopologyAsync( IReadOnlyList targetMonitorIds, IReadOnlyList? inactiveMonitorIds = null, + CancellationToken cancellationToken = default) => + ApplyDisplayTopologyAsync(targetMonitorIds, inactiveMonitorIds, placements: null, cancellationToken); + + /// + public Task ApplyDisplayTopologyAsync( + IReadOnlyList targetMonitorIds, + IReadOnlyList? inactiveMonitorIds, + IReadOnlyList? placements, CancellationToken cancellationToken = default) { ArgumentNullException.ThrowIfNull(targetMonitorIds); @@ -240,7 +271,16 @@ public Task ApplyDisplayTopologyAsync( } } - // Step 2: Enable target paths and arrange linearly (first target at (0,0) as primary) + // Step 2: Enable target paths and position according to explicit placements or linear fallback + int offsetX = 0; + int offsetY = 0; + if (placements is { Count: > 0 }) + { + var primaryPlacement = placements.FirstOrDefault(p => p.IsPrimary) ?? placements[0]; + offsetX = -primaryPlacement.PositionX; + offsetY = -primaryPlacement.PositionY; + } + int currentX = 0; for (int tIdx = 0; tIdx < targetIndices.Count; tIdx++) { @@ -250,7 +290,22 @@ public Task ApplyDisplayTopologyAsync( uint modeIdx = clonedPaths[pIndex].sourceInfo.modeInfoIdx; if (modeIdx != NativeCcdApi.DISPLAYCONFIG_PATH_MODE_IDX_INVALID && modeIdx < clonedModes.Length) { - clonedModes[modeIdx].modeInfo.sourceMode.position = new POINTL { x = currentX, y = 0 }; + var (monId, devPath, friendly) = pathTargetInfos[pIndex]; + MonitorPlacement? matchedPlacement = placements?.FirstOrDefault( + p => MatchesMonitor(p.MonitorId, monId, devPath, friendly)); + + if (matchedPlacement != null) + { + clonedModes[modeIdx].modeInfo.sourceMode.position = new POINTL + { + x = matchedPlacement.PositionX + offsetX, + y = matchedPlacement.PositionY + offsetY + }; + } + else + { + clonedModes[modeIdx].modeInfo.sourceMode.position = new POINTL { x = currentX, y = 0 }; + } // If width is known and positive, advance currentX; otherwise increment by default width (1920) int width = (int)clonedModes[modeIdx].modeInfo.sourceMode.width; diff --git a/src/RigSwitch.Infrastructure/Windows/CoreAudio/AudioEndpointWatchdogService.cs b/src/RigSwitch.Infrastructure/Windows/CoreAudio/AudioEndpointWatchdogService.cs index 43d0215..21f03fa 100644 --- a/src/RigSwitch.Infrastructure/Windows/CoreAudio/AudioEndpointWatchdogService.cs +++ b/src/RigSwitch.Infrastructure/Windows/CoreAudio/AudioEndpointWatchdogService.cs @@ -276,6 +276,19 @@ private async Task EvaluateEndpointChangeAsync(string newEndpointId, Cancellatio IReadOnlyList? blacklisted, IReadOnlyList? renderEndpoints) { + if (activePreset.AudioPriorityIds is { Count: > 0 }) + { + foreach (var candidateId in activePreset.AudioPriorityIds) + { + if (IsEndpointAvailable(candidateId, blacklisted, renderEndpoints)) + { + return candidateId; + } + } + + return null; + } + var preferredId = (mode == AudioOutputMode.Secondary && !string.IsNullOrWhiteSpace(activePreset.SecondaryAudioId)) ? activePreset.SecondaryAudioId : activePreset.PrimaryAudioId; diff --git a/tests/RigSwitch.Tests.Unit/ProfileSwitchCoordinatorAudioToggleTests.cs b/tests/RigSwitch.Tests.Unit/ProfileSwitchCoordinatorAudioToggleTests.cs index 0ddfa58..fda36d5 100644 --- a/tests/RigSwitch.Tests.Unit/ProfileSwitchCoordinatorAudioToggleTests.cs +++ b/tests/RigSwitch.Tests.Unit/ProfileSwitchCoordinatorAudioToggleTests.cs @@ -238,5 +238,77 @@ public async Task SwitchProfile_WhenPrimaryIsNotPresent_NotifiesIntentionalSwitc Assert.Single(notifiedEndpoints); Assert.Equal("{MONITOR-OLED}", notifiedEndpoints[0]); } + + [Fact] + public async Task SwitchProfile_WhenMonitorPlacementsConfigured_ForwardsPlacementsAndPerMonitorHdr() + { + var placements = new List + { + new("MONITOR-1", 0, 0, 3440, 1440, true, PresetHdrMode.Enable), + new("MONITOR-2", 3440, 0, 1920, 1080, false, PresetHdrMode.Disable) + }; + var settings = new UserSettings + { + DeskPresets = + [ + new WorkstationPreset + { + TargetMonitorIds = ["MONITOR-1", "MONITOR-2"], + MonitorPlacements = placements + } + ] + }; + _storageService.LoadSettingsAsync(Arg.Any()).Returns(settings); + + _displayManager.EnumerateDisplaysAsync(Arg.Any()) + .Returns([ + new DisplayDeviceInfo("MONITOR-1", @"\\.\DISPLAY1", "OLED", "GPU", true, true), + new DisplayDeviceInfo("MONITOR-2", @"\\.\DISPLAY2", "Side", "GPU", true, false) + ]); + _audioDirector.EnumerateAudioEndpointsAsync(Arg.Any()).Returns([]); + + var coordinator = new ProfileSwitchCoordinator(_displayManager, _audioDirector, _storageService); + var result = await coordinator.SwitchProfileAsync(ProfileMode.Desk); + + Assert.True(result); + await _displayManager.Received(1).ApplyDisplayTopologyAsync( + Arg.Is>(ids => ids.Count == 2 && ids[0] == "MONITOR-1"), + Arg.Any?>(), + Arg.Is?>(p => p != null && p.Count == 2), + Arg.Any()); + await _displayManager.Received(1).SetHdrStateAsync("MONITOR-1", true, Arg.Any()); + await _displayManager.Received(1).SetHdrStateAsync("MONITOR-2", false, Arg.Any()); + } + + [Fact] + public async Task ToggleAudioOutputMode_WithRankedPriorityList_CyclesAcrossActiveEndpoints() + { + var settings = new UserSettings + { + DeskPresets = + [ + new WorkstationPreset + { + AudioPriorityIds = ["{OFFLINE-AUX}", "{SPEAKERS}", "{HEADSET}", "{MONITOR-AUDIO}"] + } + ] + }; + _storageService.LoadSettingsAsync(Arg.Any()).Returns(settings); + + var endpoints = new List + { + new("{OFFLINE-AUX}", "Pebble V3 (AUX)", "USB", DevicePresenceState.NotPresent, false, false, AudioDeviceFlow.Playback), + new("{SPEAKERS}", "Desk Speakers", "Realtek", DevicePresenceState.Active, true, false, AudioDeviceFlow.Playback), + new("{HEADSET}", "Sonar Headset", "SteelSeries", DevicePresenceState.Active, false, false, AudioDeviceFlow.Playback), + new("{MONITOR-AUDIO}", "OLED Audio", "NVIDIA", DevicePresenceState.Active, false, false, AudioDeviceFlow.Playback) + }; + _audioDirector.EnumerateAudioEndpointsAsync(Arg.Any()).Returns(endpoints); + + var coordinator = new ProfileSwitchCoordinator(_displayManager, _audioDirector, _storageService); + await coordinator.ToggleAudioOutputModeAsync(); + + // Since {SPEAKERS} is currently IsDefaultPlayback=true, cycling advances to {HEADSET} + await _audioDirector.Received(1).SetDefaultPlaybackEndpointAsync("{HEADSET}", Arg.Any()); + } } From a58e7c43481dc28a39c86653359b125c28ac1f26 Mon Sep 17 00:00:00 2001 From: Steven Pelech Date: Thu, 15 Oct 2026 13:47:23 -0500 Subject: [PATCH 06/13] feat: viewmodels for preset pages, ranking, topology canvas and nicknames --- .../ViewModels/DeviceNicknameItemViewModel.cs | 10 +- .../ViewModels/DeviceOptionResolver.cs | 66 +- .../ViewModels/MainSettingsViewModel.cs | 383 ++++++++- .../PresetConfigurationItemViewModel.cs | 774 +++++++++++++++++- .../PresetMonitorCanvasItemViewModel.cs | 225 +++++ .../ViewModels/RankedAudioItemViewModel.cs | 111 +++ .../MainSettingsViewModelRedesignTests.cs | 191 +++++ 7 files changed, 1712 insertions(+), 48 deletions(-) create mode 100644 src/RigSwitch.App/ViewModels/PresetMonitorCanvasItemViewModel.cs create mode 100644 src/RigSwitch.App/ViewModels/RankedAudioItemViewModel.cs create mode 100644 tests/RigSwitch.Tests.Unit/MainSettingsViewModelRedesignTests.cs diff --git a/src/RigSwitch.App/ViewModels/DeviceNicknameItemViewModel.cs b/src/RigSwitch.App/ViewModels/DeviceNicknameItemViewModel.cs index 9e7615c..2cdd46c 100644 --- a/src/RigSwitch.App/ViewModels/DeviceNicknameItemViewModel.cs +++ b/src/RigSwitch.App/ViewModels/DeviceNicknameItemViewModel.cs @@ -31,6 +31,11 @@ public string CustomNickname set => SetProperty(ref _customNickname, value); } + /// + /// Gets the command that removes this custom nickname and returns the device to the un-nicknamed pool. + /// + public System.Windows.Input.ICommand RemoveCommand { get; } + /// /// Initializes a new instance of the class. /// @@ -38,15 +43,18 @@ public string CustomNickname /// The device type description. /// The default hardware name. /// The user nickname. + /// Optional callback invoked when removing this nickname. public DeviceNicknameItemViewModel( string deviceId, string deviceType, string hardwareName, - string customNickname) + string customNickname, + Action? removeAction = null) { DeviceId = deviceId; DeviceType = deviceType; HardwareName = hardwareName; CustomNickname = customNickname; + RemoveCommand = new RelayCommand(() => removeAction?.Invoke(this)); } } diff --git a/src/RigSwitch.App/ViewModels/DeviceOptionResolver.cs b/src/RigSwitch.App/ViewModels/DeviceOptionResolver.cs index dfcccd4..fc0576c 100644 --- a/src/RigSwitch.App/ViewModels/DeviceOptionResolver.cs +++ b/src/RigSwitch.App/ViewModels/DeviceOptionResolver.cs @@ -65,9 +65,13 @@ public static IReadOnlyList FilterBlacklistedEndpoints( } /// - /// Filters an audio endpoint item based on search text and presence state filter selection. + /// Filters an audio endpoint item based on search text, presence state filter selection, and optional referenced IDs. /// - public static bool MatchesAudioFilter(AudioEndpointVisibilityItemViewModel item, string searchText, string filterSelection) + public static bool MatchesAudioFilter( + AudioEndpointVisibilityItemViewModel item, + string searchText, + string filterSelection, + IEnumerable? referencedIds = null) { if (!string.IsNullOrWhiteSpace(searchText)) { @@ -76,6 +80,21 @@ public static bool MatchesAudioFilter(AudioEndpointVisibilityItemViewModel item, if (!nameMatch && !adapterMatch) return false; } + if (string.Equals(filterSelection, "Relevant", StringComparison.OrdinalIgnoreCase)) + { + if (item.State != DevicePresenceState.NotPresent) + { + return true; + } + + if (item.IsBlacklisted || !item.IsVisible) + { + return true; + } + + return referencedIds != null && referencedIds.Any(rId => MatchesEndpoint(rId, item.Id)); + } + if (string.Equals(filterSelection, "Active", StringComparison.OrdinalIgnoreCase)) return item.State == DevicePresenceState.Active; @@ -92,6 +111,49 @@ public static bool MatchesAudioFilter(AudioEndpointVisibilityItemViewModel item, return true; } + /// + /// Collects all device IDs referenced across presets, blacklists, hidden endpoints, and custom nicknames. + /// + public static HashSet CollectReferencedDeviceIds(UserSettings? settings) + { + var ids = new HashSet(StringComparer.OrdinalIgnoreCase); + if (settings == null) + { + return ids; + } + + void AddIfNotEmpty(string? id) + { + if (!string.IsNullOrWhiteSpace(id)) + { + ids.Add(id); + } + } + + AddIfNotEmpty(settings.DeskMonitorId); + AddIfNotEmpty(settings.RigMonitorId); + AddIfNotEmpty(settings.DeskPrimaryAudioId); + AddIfNotEmpty(settings.DeskFallbackAudioId); + AddIfNotEmpty(settings.RigPrimaryAudioId); + + foreach (var b in settings.BlacklistedAudioEndpointIds) AddIfNotEmpty(b); + foreach (var h in settings.HiddenAudioEndpointIds) AddIfNotEmpty(h); + foreach (var (k, v) in settings.CustomDeviceNames) + { + if (!string.IsNullOrWhiteSpace(v)) AddIfNotEmpty(k); + } + + foreach (var preset in settings.DeskPresets.Concat(settings.RigPresets)) + { + foreach (var m in preset.TargetMonitorIds) AddIfNotEmpty(m); + foreach (var p in preset.MonitorPlacements) AddIfNotEmpty(p.MonitorId); + foreach (var a in preset.GetEffectiveAudioPriorityList()) AddIfNotEmpty(a); + foreach (var mic in preset.GetEffectiveMicrophonePriorityList()) AddIfNotEmpty(mic); + } + + return ids; + } + /// /// Formats an audio endpoint label for an offline or disconnected device. /// diff --git a/src/RigSwitch.App/ViewModels/MainSettingsViewModel.cs b/src/RigSwitch.App/ViewModels/MainSettingsViewModel.cs index 63f6084..567657a 100644 --- a/src/RigSwitch.App/ViewModels/MainSettingsViewModel.cs +++ b/src/RigSwitch.App/ViewModels/MainSettingsViewModel.cs @@ -1,6 +1,7 @@ namespace RigSwitch.App.ViewModels; using System.Collections.ObjectModel; +using System.Reflection; using System.Windows; using System.Windows.Data; using System.Windows.Input; @@ -13,7 +14,7 @@ namespace RigSwitch.App.ViewModels; using RigSwitch.Infrastructure.Services; /// -/// Primary view model orchestrating hardware profiles, device renaming, audio visibility, update checks, and preferences. +/// Primary view model orchestrating hardware profiles, per-preset 2D topology & ranked audio routing, device nicknames, audio visibility, update checks, and preferences. /// public sealed partial class MainSettingsViewModel : ViewModelBase, IDisposable { @@ -47,6 +48,14 @@ public sealed partial class MainSettingsViewModel : ViewModelBase, IDisposable private string _ignoredReleaseVersion = string.Empty; private bool _disposed; private List _cachedRawAudioEndpoints = []; + private HashSet _referencedDeviceIds = new(StringComparer.OrdinalIgnoreCase); + + private PresetConfigurationItemViewModel? _selectedPreset; + private int _selectedPageIndex; + private string _selectedNewNicknameDeviceId = string.Empty; + private string _newNicknameText = string.Empty; + + public string AppVersionText { get; } = ResolveAppVersionText(); public ObservableCollection DetectedDisplays { get; } = []; public ObservableCollection DetectedAudioEndpoints { get; } = []; @@ -54,9 +63,63 @@ public sealed partial class MainSettingsViewModel : ViewModelBase, IDisposable public ObservableCollection AvailableAudioOptions { get; } = []; public ObservableCollection AvailableMicrophoneOptions { get; } = []; public ObservableCollection DeviceNicknames { get; } = []; + public ObservableCollection ConfiguredNicknames { get; } = []; + public ObservableCollection UnnicknamedDeviceOptions { get; } = []; public ObservableCollection AudioEndpointsVisibility { get; } = []; public System.ComponentModel.ICollectionView? FilteredAudioEndpoints { get; private set; } + public int SelectedPageIndex + { + get => _selectedPageIndex; + set + { + if (SetProperty(ref _selectedPageIndex, value)) + { + OnPropertyChanged(nameof(IsPresetViewSelected)); + OnPropertyChanged(nameof(IsAudioPageSelected)); + OnPropertyChanged(nameof(IsNicknamesPageSelected)); + OnPropertyChanged(nameof(IsHotkeysPageSelected)); + } + } + } + + public bool IsPresetViewSelected => SelectedPageIndex == 0; + public bool IsAudioPageSelected => SelectedPageIndex == 2; + public bool IsNicknamesPageSelected => SelectedPageIndex == 3; + public bool IsHotkeysPageSelected => SelectedPageIndex == 4; + + public PresetConfigurationItemViewModel? SelectedPreset + { + get => _selectedPreset; + set + { + if (SetProperty(ref _selectedPreset, value)) + { + foreach (var p in DeskPresets) + { + p.IsSelectedInNav = IsPresetViewSelected && ReferenceEquals(p, value); + } + + foreach (var p in RigPresets) + { + p.IsSelectedInNav = IsPresetViewSelected && ReferenceEquals(p, value); + } + } + } + } + + public string SelectedNewNicknameDeviceId + { + get => _selectedNewNicknameDeviceId; + set => SetProperty(ref _selectedNewNicknameDeviceId, value ?? string.Empty); + } + + public string NewNicknameText + { + get => _newNicknameText; + set => SetProperty(ref _newNicknameText, value ?? string.Empty); + } + private string _audioSearchText = string.Empty; public string AudioSearchText { @@ -71,7 +134,7 @@ public string AudioSearchText } } - private string _audioFilterSelection = "All"; + private string _audioFilterSelection = "Relevant"; public string AudioFilterSelection { get => _audioFilterSelection; @@ -80,6 +143,7 @@ public string AudioFilterSelection if (SetProperty(ref _audioFilterSelection, value)) { FilteredAudioEndpoints?.Refresh(); + OnPropertyChanged(nameof(IsRelevantFilterSelected)); OnPropertyChanged(nameof(IsAllFilterSelected)); OnPropertyChanged(nameof(IsActiveFilterSelected)); OnPropertyChanged(nameof(IsInactiveFilterSelected)); @@ -88,9 +152,22 @@ public string AudioFilterSelection } } + public bool IsRelevantFilterSelected + { + get => string.Equals(AudioFilterSelection, "Relevant", StringComparison.OrdinalIgnoreCase); + set + { + if (value) + { + AudioFilterSelection = "Relevant"; + } + } + } + public bool IsAllFilterSelected { - get => string.Equals(AudioFilterSelection, "All", StringComparison.OrdinalIgnoreCase); + get => string.Equals(AudioFilterSelection, "All", StringComparison.OrdinalIgnoreCase) || + string.Equals(AudioFilterSelection, "Relevant", StringComparison.OrdinalIgnoreCase); set { if (value) @@ -134,22 +211,27 @@ public string FilterStatusSummary int total = AudioEndpointsVisibility.Count; int active = AudioEndpointsVisibility.Count(e => e.State == RigSwitch.Core.Enums.DevicePresenceState.Active); int inactive = AudioEndpointsVisibility.Count(e => e.State != RigSwitch.Core.Enums.DevicePresenceState.Active); + int relevant = AudioEndpointsVisibility.Count(e => MatchesAudioFilter(e, string.Empty, "Relevant", _referencedDeviceIds)); string modeLabel = IsActiveFilterSelected ? "Active Only" : IsInactiveFilterSelected ? "Disabled / Unplugged" - : "All Devices"; + : IsRelevantFilterSelected + ? "All Relevant Devices" + : "All Registry Ghosts"; int matchingCount = IsActiveFilterSelected ? active : IsInactiveFilterSelected ? inactive - : total; + : IsRelevantFilterSelected + ? relevant + : total; if (!string.IsNullOrWhiteSpace(AudioSearchText)) { - int searchMatches = AudioEndpointsVisibility.Count(e => MatchesAudioFilter(e, AudioSearchText, AudioFilterSelection)); + int searchMatches = AudioEndpointsVisibility.Count(e => MatchesAudioFilter(e, AudioSearchText, AudioFilterSelection, _referencedDeviceIds)); return $"Showing {modeLabel} β€’ {searchMatches} of {total} endpoints matching \"{AudioSearchText}\""; } @@ -157,11 +239,21 @@ public string FilterStatusSummary } } + public ICommand SelectRelevantAudioFilterCommand { get; } public ICommand SelectAllAudioFilterCommand { get; } public ICommand SelectActiveAudioFilterCommand { get; } public ICommand SelectInactiveAudioFilterCommand { get; } - - public static bool MatchesAudioFilter(AudioEndpointVisibilityItemViewModel item, string searchText, string filterSelection) => DeviceOptionResolver.MatchesAudioFilter(item, searchText, filterSelection); + public ICommand NavigateToPresetCommand { get; } + public ICommand NavigateToSystemPageCommand { get; } + public ICommand AddNicknameCommand { get; } + public ICommand RemoveNicknameCommand { get; } + + public static bool MatchesAudioFilter( + AudioEndpointVisibilityItemViewModel item, + string searchText, + string filterSelection, + IEnumerable? referencedIds = null) => + DeviceOptionResolver.MatchesAudioFilter(item, searchText, filterSelection, referencedIds); public ObservableCollection DeskPresets { get; } = []; public ObservableCollection RigPresets { get; } = []; @@ -244,14 +336,75 @@ public MainSettingsViewModel( IdentifyMonitorsCommand = new RelayCommand(IdentifyMonitors); CheckForUpdatesCommand = new AsyncRelayCommand(() => CheckForUpdatesManualAsync(), () => !IsBusy); + SelectRelevantAudioFilterCommand = new RelayCommand(() => AudioFilterSelection = "Relevant"); SelectAllAudioFilterCommand = new RelayCommand(() => AudioFilterSelection = "All"); SelectActiveAudioFilterCommand = new RelayCommand(() => AudioFilterSelection = "Active"); SelectInactiveAudioFilterCommand = new RelayCommand(() => AudioFilterSelection = "Inactive"); + NavigateToPresetCommand = new RelayCommand(param => + { + if (param is PresetConfigurationItemViewModel presetVm) + { + SelectPresetForNavigation(presetVm); + } + }); + + NavigateToSystemPageCommand = new RelayCommand(param => + { + if (param is string pageTag && int.TryParse(pageTag, out int pageIdx)) + { + NavigateToSystemPage(pageIdx); + } + else if (param is int idx) + { + NavigateToSystemPage(idx); + } + }); + + AddNicknameCommand = new RelayCommand(AddNewNickname); + RemoveNicknameCommand = new RelayCommand(param => + { + if (param is DeviceNicknameItemViewModel item) + { + RemoveNickname(item); + } + }); + FilteredAudioEndpoints = CollectionViewSource.GetDefaultView(AudioEndpointsVisibility); if (FilteredAudioEndpoints != null) { - FilteredAudioEndpoints.Filter = item => item is AudioEndpointVisibilityItemViewModel endpoint && MatchesAudioFilter(endpoint, AudioSearchText, AudioFilterSelection); + FilteredAudioEndpoints.Filter = item => + item is AudioEndpointVisibilityItemViewModel endpoint && + MatchesAudioFilter(endpoint, AudioSearchText, AudioFilterSelection, _referencedDeviceIds); + } + } + + public void SelectPresetForNavigation(PresetConfigurationItemViewModel presetVm) + { + SelectedPageIndex = 0; + SelectedPreset = presetVm; + foreach (var p in DeskPresets) + { + p.IsSelectedInNav = ReferenceEquals(p, presetVm); + } + + foreach (var p in RigPresets) + { + p.IsSelectedInNav = ReferenceEquals(p, presetVm); + } + } + + public void NavigateToSystemPage(int pageIndex) + { + SelectedPageIndex = pageIndex; + foreach (var p in DeskPresets) + { + p.IsSelectedInNav = false; + } + + foreach (var p in RigPresets) + { + p.IsSelectedInNav = false; } } @@ -306,6 +459,8 @@ public async Task LoadAsync(CancellationToken cancellationToken = default) } } + _referencedDeviceIds = DeviceOptionResolver.CollectReferencedDeviceIds(_settings); + AvailableDisplayOptions.Clear(); AvailableDisplayOptions.Add(new DeviceSelectionOption(string.Empty, "β€” Select Display (Unassigned) β€”")); foreach (var d in displays) @@ -335,7 +490,18 @@ public async Task LoadAsync(CancellationToken cancellationToken = default) preset.PrimaryMicrophoneId = DeviceOptionResolver.ResolveAudioOption(preset.PrimaryMicrophoneId, audioEndpoints, AvailableMicrophoneOptions, _settings.CustomDeviceNames, _settings.CachedDeviceNames); preset.SecondaryMicrophoneId = DeviceOptionResolver.ResolveAudioOption(preset.SecondaryMicrophoneId, audioEndpoints, AvailableMicrophoneOptions, _settings.CustomDeviceNames, _settings.CachedDeviceNames); preset.FallbackMicrophoneId = DeviceOptionResolver.ResolveAudioOption(preset.FallbackMicrophoneId, audioEndpoints, AvailableMicrophoneOptions, _settings.CustomDeviceNames, _settings.CachedDeviceNames); - DeskPresets.Add(new PresetConfigurationItemViewModel(preset, i, "DeskActivePreset", i == _settings.ActiveDeskPresetIndex, OnDeskPresetActivated)); + + var presetVm = new PresetConfigurationItemViewModel( + preset, + i, + "DeskActivePreset", + i == _settings.ActiveDeskPresetIndex, + OnDeskPresetActivated, + profile: ProfileMode.Desk, + onActivateNow: p => _ = ActivatePresetNowAsync(ProfileMode.Desk, p.PresetIndex), + onIdentifyMonitors: IdentifyMonitors); + presetVm.HydrateHardwareContext(displays, _cachedRawAudioEndpoints, _settings.CustomDeviceNames, _settings.CachedDeviceNames, _settings.BlacklistedAudioEndpointIds); + DeskPresets.Add(presetVm); } RigPresets.Clear(); @@ -349,32 +515,43 @@ public async Task LoadAsync(CancellationToken cancellationToken = default) preset.PrimaryMicrophoneId = DeviceOptionResolver.ResolveAudioOption(preset.PrimaryMicrophoneId, audioEndpoints, AvailableMicrophoneOptions, _settings.CustomDeviceNames, _settings.CachedDeviceNames); preset.SecondaryMicrophoneId = DeviceOptionResolver.ResolveAudioOption(preset.SecondaryMicrophoneId, audioEndpoints, AvailableMicrophoneOptions, _settings.CustomDeviceNames, _settings.CachedDeviceNames); preset.FallbackMicrophoneId = DeviceOptionResolver.ResolveAudioOption(preset.FallbackMicrophoneId, audioEndpoints, AvailableMicrophoneOptions, _settings.CustomDeviceNames, _settings.CachedDeviceNames); - RigPresets.Add(new PresetConfigurationItemViewModel(preset, i, "RigActivePreset", i == _settings.ActiveRigPresetIndex, OnRigPresetActivated)); - } - DeviceNicknames.Clear(); - var seenNicknameIds = new HashSet(StringComparer.OrdinalIgnoreCase); - foreach (var d in displays) - { - DeviceNicknames.Add(new DeviceNicknameItemViewModel(d.MonitorId, "Display", d.FriendlyName, _settings.CustomDeviceNames.GetValueOrDefault(d.MonitorId, string.Empty))); - seenNicknameIds.Add(d.MonitorId); + var presetVm = new PresetConfigurationItemViewModel( + preset, + i, + "RigActivePreset", + i == _settings.ActiveRigPresetIndex, + OnRigPresetActivated, + profile: ProfileMode.SimRig, + onActivateNow: p => _ = ActivatePresetNowAsync(ProfileMode.SimRig, p.PresetIndex), + onIdentifyMonitors: IdentifyMonitors); + presetVm.HydrateHardwareContext(displays, _cachedRawAudioEndpoints, _settings.CustomDeviceNames, _settings.CachedDeviceNames, _settings.BlacklistedAudioEndpointIds); + RigPresets.Add(presetVm); } - foreach (var a in audioEndpoints) + + if (SelectedPreset == null) { - string kind = a.Flow == AudioDeviceFlow.Capture ? "Microphone / Input" : "Audio Playback"; - DeviceNicknames.Add(new DeviceNicknameItemViewModel(a.Id, kind, a.Name, _settings.CustomDeviceNames.GetValueOrDefault(a.Id, string.Empty))); - seenNicknameIds.Add(a.Id); + var initialPreset = CurrentProfile == ProfileMode.SimRig + ? (RigPresets.FirstOrDefault(p => p.IsActive) ?? RigPresets.FirstOrDefault()) + : (DeskPresets.FirstOrDefault(p => p.IsActive) ?? DeskPresets.FirstOrDefault()); + if (initialPreset != null) + { + SelectPresetForNavigation(initialPreset); + } } - foreach (var (id, cachedName) in _settings.CachedDeviceNames) + else { - if (!seenNicknameIds.Contains(id)) + var matchingPreset = (SelectedPreset.Profile == ProfileMode.SimRig ? RigPresets : DeskPresets) + .FirstOrDefault(p => p.PresetIndex == SelectedPreset.PresetIndex) + ?? DeskPresets.FirstOrDefault(); + if (matchingPreset != null) { - string kind = id.Contains('{') ? "Audio (Offline)" : "Display (Offline)"; - DeviceNicknames.Add(new DeviceNicknameItemViewModel(id, kind, $"{cachedName} (Offline)", _settings.CustomDeviceNames.GetValueOrDefault(id, string.Empty))); - seenNicknameIds.Add(id); + SelectPresetForNavigation(matchingPreset); } } + PopulateNicknameCollections(displays, _cachedRawAudioEndpoints); + AudioEndpointsVisibility.Clear(); var hiddenList = _settings.HiddenAudioEndpointIds; var blacklistedList = _settings.BlacklistedAudioEndpointIds; @@ -392,6 +569,7 @@ public async Task LoadAsync(CancellationToken cancellationToken = default) isBlacklisted, OnAudioBlacklistChangedAsync)); } + FilteredAudioEndpoints?.Refresh(); OnPropertyChanged(nameof(FilterStatusSummary)); PopulateMonitorTiles(displays, _settings); @@ -408,6 +586,139 @@ public async Task LoadAsync(CancellationToken cancellationToken = default) } } + public void AddNewNickname() + { + if (string.IsNullOrWhiteSpace(SelectedNewNicknameDeviceId) || string.IsNullOrWhiteSpace(NewNicknameText)) + { + return; + } + + string targetId = SelectedNewNicknameDeviceId; + string trimmedNick = NewNicknameText.Trim(); + + if (_settings != null) + { + _settings.CustomDeviceNames[targetId] = trimmedNick; + _referencedDeviceIds = DeviceOptionResolver.CollectReferencedDeviceIds(_settings); + } + + var existingItem = DeviceNicknames.FirstOrDefault(n => string.Equals(n.DeviceId, targetId, StringComparison.OrdinalIgnoreCase)); + if (existingItem != null) + { + existingItem.CustomNickname = trimmedNick; + } + else + { + var newItem = new DeviceNicknameItemViewModel(targetId, "Device", targetId, trimmedNick, RemoveNickname); + DeviceNicknames.Add(newItem); + } + + NewNicknameText = string.Empty; + RefreshNicknameSelections(); + StatusMessage = $"Added nickname '{trimmedNick}'. Click Save Changes to persist."; + } + + public void RemoveNickname(DeviceNicknameItemViewModel item) + { + ArgumentNullException.ThrowIfNull(item); + item.CustomNickname = string.Empty; + if (_settings != null) + { + _settings.CustomDeviceNames.Remove(item.DeviceId); + _referencedDeviceIds = DeviceOptionResolver.CollectReferencedDeviceIds(_settings); + } + + RefreshNicknameSelections(); + StatusMessage = $"Removed nickname for '{item.HardwareName}'."; + } + + private void PopulateNicknameCollections(IReadOnlyList displays, IReadOnlyList audioEndpoints) + { + DeviceNicknames.Clear(); + var seenNicknameIds = new HashSet(StringComparer.OrdinalIgnoreCase); + + foreach (var d in displays) + { + string nick = _settings?.CustomDeviceNames.GetValueOrDefault(d.MonitorId, string.Empty) ?? string.Empty; + DeviceNicknames.Add(new DeviceNicknameItemViewModel(d.MonitorId, "Display", d.FriendlyName, nick, RemoveNickname)); + seenNicknameIds.Add(d.MonitorId); + } + + foreach (var a in audioEndpoints) + { + bool isRelevant = a.State != DevicePresenceState.NotPresent || + _referencedDeviceIds.Any(r => DeviceOptionResolver.MatchesEndpoint(r, a.Id)) || + (_settings?.CustomDeviceNames.ContainsKey(a.Id) == true); + if (!isRelevant) + { + continue; + } + + string kind = a.Flow == AudioDeviceFlow.Capture ? "Microphone / Input" : "Audio Playback"; + string nick = _settings?.CustomDeviceNames.GetValueOrDefault(a.Id, string.Empty) ?? string.Empty; + DeviceNicknames.Add(new DeviceNicknameItemViewModel(a.Id, kind, a.Name, nick, RemoveNickname)); + seenNicknameIds.Add(a.Id); + } + + if (_settings != null) + { + foreach (var (id, customNick) in _settings.CustomDeviceNames) + { + if (!seenNicknameIds.Contains(id) && !string.IsNullOrWhiteSpace(customNick)) + { + string cachedName = _settings.CachedDeviceNames.GetValueOrDefault(id, id); + string kind = id.Contains('{') ? "Audio (Offline)" : "Display (Offline)"; + DeviceNicknames.Add(new DeviceNicknameItemViewModel(id, kind, $"{cachedName} (Offline)", customNick, RemoveNickname)); + seenNicknameIds.Add(id); + } + } + } + + RefreshNicknameSelections(); + } + + private void RefreshNicknameSelections() + { + ConfiguredNicknames.Clear(); + UnnicknamedDeviceOptions.Clear(); + + foreach (var item in DeviceNicknames) + { + if (!string.IsNullOrWhiteSpace(item.CustomNickname)) + { + ConfiguredNicknames.Add(item); + } + else + { + UnnicknamedDeviceOptions.Add(new DeviceSelectionOption(item.DeviceId, $"[{item.DeviceType}] {item.HardwareName}")); + } + } + + SelectedNewNicknameDeviceId = UnnicknamedDeviceOptions.FirstOrDefault()?.Id ?? string.Empty; + } + + public async Task ActivatePresetNowAsync(ProfileMode profile, int presetIndex) + { + await SaveSettingsAsync(); + IsBusy = true; + StatusMessage = $"Activating {profile} Preset {presetIndex + 1}..."; + try + { + bool ok = await _coordinator.SwitchToPresetAsync(profile, presetIndex); + StatusMessage = ok + ? $"Activated {profile} Preset {presetIndex + 1}." + : $"Failed to activate {profile} Preset {presetIndex + 1}."; + } + catch (Exception ex) + { + StatusMessage = $"Activation error: {ex.Message}"; + } + finally + { + IsBusy = false; + } + } + public async Task SwitchProfileAsync(ProfileMode targetProfile) { IsBusy = true; @@ -475,6 +786,8 @@ public async Task SaveSettingsAsync() settings.CustomDeviceNames.Remove(nickItem.DeviceId); } + _referencedDeviceIds = DeviceOptionResolver.CollectReferencedDeviceIds(settings); + await _settingsStorage.SaveSettingsAsync(settings); _settings = settings; @@ -691,6 +1004,22 @@ private void OnProfileChanged(object? sender, ProfileChangedEventArgs e) Application.Current?.Dispatcher?.Invoke(() => CurrentProfile = _coordinator.CurrentProfile); } + private static string ResolveAppVersionText() + { + var infoVer = typeof(MainSettingsViewModel).Assembly + .GetCustomAttribute() + ?.InformationalVersion; + if (!string.IsNullOrWhiteSpace(infoVer)) + { + int plusIdx = infoVer.IndexOf('+'); + string clean = plusIdx > 0 ? infoVer[..plusIdx] : infoVer; + return clean.StartsWith('v') ? clean : $"v{clean}"; + } + + var ver = typeof(MainSettingsViewModel).Assembly.GetName().Version; + return ver != null ? $"v{ver.Major}.{ver.Minor}.{Math.Max(0, ver.Build)}" : "v1.4.0"; + } + public void Dispose() { if (_disposed) return; diff --git a/src/RigSwitch.App/ViewModels/PresetConfigurationItemViewModel.cs b/src/RigSwitch.App/ViewModels/PresetConfigurationItemViewModel.cs index e2b3f84..0ff9c10 100644 --- a/src/RigSwitch.App/ViewModels/PresetConfigurationItemViewModel.cs +++ b/src/RigSwitch.App/ViewModels/PresetConfigurationItemViewModel.cs @@ -8,14 +8,24 @@ namespace RigSwitch.App.ViewModels; using RigSwitch.Core.Models; /// -/// Wraps a for MVVM data binding, preset configuration, and hardware routing. +/// Wraps a for MVVM data binding, per-preset 2D monitor topology, and ranked audio/microphone priority routing. /// public sealed class PresetConfigurationItemViewModel : ViewModelBase { + private const double StageReferenceWidth = 520.0; + private const double StageReferenceHeight = 220.0; + private const double StageScaleFactor = 0.052; + private const int SnapThresholdPixels = 160; + private readonly Action? _onActivated; + private readonly Action? _onActivateNow; + private readonly Action? _onIdentifyMonitors; private string _name; private string _targetMonitorId; private List _targetMonitorIds = []; + private List _monitorPlacements = []; + private List _audioPriorityIds = []; + private List _microphonePriorityIds = []; private string _primaryAudioId; private string _secondaryAudioId = string.Empty; private string _fallbackAudioId; @@ -31,27 +41,102 @@ public sealed class PresetConfigurationItemViewModel : ViewModelBase private PresetHdrMode _hdrMode = PresetHdrMode.Retain; private string _directHotkey; private bool _isActive; + private bool _isSelectedInNav; + private string _selectedAudioToAddId = string.Empty; + private string _selectedMicToAddId = string.Empty; + + private IReadOnlyList _latestDisplays = []; + private IReadOnlyList _latestAudioEndpoints = []; + private IDictionary _customNames = new Dictionary(StringComparer.OrdinalIgnoreCase); + private IDictionary _cachedNames = new Dictionary(StringComparer.OrdinalIgnoreCase); + private IReadOnlyList _blacklistedIds = []; /// /// Gets the application lifecycle hooks configured for this preset. /// public ObservableCollection ApplicationHooks { get; } = []; + /// + /// Gets the monitors currently enabled on this preset's 2D spatial stage. + /// + public ObservableCollection StageMonitors { get; } = []; + + /// + /// Gets the monitors not enabled in this preset ("Off in Preset" tray). + /// + public ObservableCollection UnassignedMonitors { get; } = []; + + /// + /// Gets the ordered playback audio priority list for this preset. + /// + public ObservableCollection AudioRanking { get; } = []; + + /// + /// Gets the ordered microphone priority list for this preset. + /// + public ObservableCollection MicrophoneRanking { get; } = []; + + /// + /// Gets the playback audio options that are not yet in . + /// + public ObservableCollection AddableAudioOptions { get; } = []; + + /// + /// Gets the microphone options that are not yet in . + /// + public ObservableCollection AddableMicrophoneOptions { get; } = []; + + public string SelectedAudioToAddId + { + get => _selectedAudioToAddId; + set => SetProperty(ref _selectedAudioToAddId, value ?? string.Empty); + } + + public string SelectedMicToAddId + { + get => _selectedMicToAddId; + set => SetProperty(ref _selectedMicToAddId, value ?? string.Empty); + } + /// /// Gets the command to add a new application lifecycle hook using a file dialog. /// public ICommand AddApplicationHookCommand { get; } + public ICommand AddAudioToRankingCommand { get; } + + public ICommand AddMicToRankingCommand { get; } + + public ICommand CaptureWindowsLayoutCommand { get; } + + public ICommand IdentifyMonitorsCommand { get; } + + public ICommand ActivatePresetNowCommand { get; } + /// /// Gets the zero-based index of this preset within its profile mode. /// public int PresetIndex { get; } + /// + /// Gets the profile mode this preset belongs to. + /// + public ProfileMode Profile { get; } + /// /// Gets the mutually exclusive radio button group name. /// public string GroupName { get; } + /// + /// Gets or sets whether this preset is currently selected in the left navigation rail. + /// + public bool IsSelectedInNav + { + get => _isSelectedInNav; + set => SetProperty(ref _isSelectedInNav, value); + } + /// /// Gets or sets the user-friendly display name of this preset. /// @@ -63,10 +148,15 @@ public string Name if (SetProperty(ref _name, value)) { OnPropertyChanged(nameof(Header)); + OnPropertyChanged(nameof(NavSubLabel)); } } } + public string NavTitle => $"{(Profile == ProfileMode.Desk ? "Desk" : "Sim Rig")} {PresetIndex + 1}"; + + public string NavSubLabel => string.IsNullOrWhiteSpace(Name) ? NavTitle : Name; + /// /// Gets or sets the target monitor hardware identifier or EDID. /// @@ -285,16 +375,6 @@ public bool IsActive /// public ICommand OpenDisplaySettingsCommand { get; } - /// - /// Initializes a new instance of the class. - /// - /// The workstation preset record to bind. - /// The zero-based index of this preset. - /// The radio button group name for mutually exclusive selection. - /// Whether this preset is initially active. - /// Optional callback invoked when this preset becomes active. - /// Optional custom action to invoke for display settings command. - /// Optional custom action to select executable file for testing. public PresetConfigurationItemViewModel( WorkstationPreset preset, int presetIndex, @@ -302,17 +382,26 @@ public PresetConfigurationItemViewModel( bool isActive, Action? onActivated = null, Action? openDisplaySettingsAction = null, - Func? selectFileAction = null) + Func? selectFileAction = null, + ProfileMode profile = ProfileMode.Desk, + Action? onActivateNow = null, + Action? onIdentifyMonitors = null) { ArgumentNullException.ThrowIfNull(preset); PresetIndex = presetIndex; GroupName = groupName; + Profile = groupName.Contains("Rig", StringComparison.OrdinalIgnoreCase) ? ProfileMode.SimRig : profile; _isActive = isActive; _onActivated = onActivated; + _onActivateNow = onActivateNow; + _onIdentifyMonitors = onIdentifyMonitors; _name = preset.Name; _targetMonitorIds = [.. preset.TargetMonitorIds]; _targetMonitorId = preset.TargetMonitorId; + _monitorPlacements = preset.MonitorPlacements?.Select(p => p with { }).ToList() ?? []; + _audioPriorityIds = [.. preset.GetEffectiveAudioPriorityList()]; + _microphonePriorityIds = [.. preset.GetEffectiveMicrophonePriorityList()]; _primaryAudioId = preset.PrimaryAudioId; _secondaryAudioId = preset.SecondaryAudioId ?? string.Empty; _fallbackAudioId = preset.FallbackAudioId; @@ -350,6 +439,614 @@ public PresetConfigurationItemViewModel( ApplicationHooks.Add(new ApplicationHookItemViewModel(newHook, RemoveApplicationHook)); } }); + + AddAudioToRankingCommand = new RelayCommand(() => AddAudioEndpoint(SelectedAudioToAddId)); + AddMicToRankingCommand = new RelayCommand(() => AddMicrophoneEndpoint(SelectedMicToAddId)); + CaptureWindowsLayoutCommand = new RelayCommand(CaptureWindowsLayout); + IdentifyMonitorsCommand = new RelayCommand(() => _onIdentifyMonitors?.Invoke()); + ActivatePresetNowCommand = new RelayCommand(() => _onActivateNow?.Invoke(this)); + + RebuildRankedCollections(); + } + + public void HydrateHardwareContext( + IReadOnlyList displays, + IReadOnlyList audioEndpoints, + IDictionary customNames, + IDictionary cachedNames, + IReadOnlyList blacklistedIds) + { + _latestDisplays = displays ?? []; + _latestAudioEndpoints = audioEndpoints ?? []; + _customNames = customNames ?? new Dictionary(StringComparer.OrdinalIgnoreCase); + _cachedNames = cachedNames ?? new Dictionary(StringComparer.OrdinalIgnoreCase); + _blacklistedIds = blacklistedIds ?? []; + + RebuildMonitorStageAndTray(); + RebuildRankedCollections(); + } + + public void AddMonitorToStage(PresetMonitorCanvasItemViewModel item) + { + ArgumentNullException.ThrowIfNull(item); + if (StageMonitors.Contains(item)) + { + return; + } + + UnassignedMonitors.Remove(item); + item.IsOnStage = true; + + if (StageMonitors.Count == 0) + { + item.IsPrimary = true; + item.PositionX = 0; + item.PositionY = 0; + } + else + { + int rightEdge = StageMonitors.Max(m => m.PositionX + m.Width); + item.IsPrimary = false; + item.PositionX = rightEdge; + item.PositionY = 0; + } + + StageMonitors.Add(item); + SyncMonitorsToBackingLists(); + UpdateCanvasLayoutPositions(); + } + + public void RemoveMonitorFromStage(PresetMonitorCanvasItemViewModel item) + { + ArgumentNullException.ThrowIfNull(item); + if (!StageMonitors.Remove(item)) + { + return; + } + + bool wasPrimary = item.IsPrimary; + item.IsPrimary = false; + item.IsOnStage = false; + UnassignedMonitors.Add(item); + + if (wasPrimary && StageMonitors.Count > 0) + { + SetPrimaryMonitor(StageMonitors[0]); + } + else + { + SyncMonitorsToBackingLists(); + UpdateCanvasLayoutPositions(); + } + } + + public void SetPrimaryMonitor(PresetMonitorCanvasItemViewModel item) + { + ArgumentNullException.ThrowIfNull(item); + if (!StageMonitors.Contains(item)) + { + return; + } + + int deltaX = -item.PositionX; + int deltaY = -item.PositionY; + + foreach (var mon in StageMonitors) + { + mon.IsPrimary = ReferenceEquals(mon, item); + mon.PositionX += deltaX; + mon.PositionY += deltaY; + } + + SyncMonitorsToBackingLists(); + UpdateCanvasLayoutPositions(); + } + + public void CycleMonitorHdr(PresetMonitorCanvasItemViewModel item) + { + ArgumentNullException.ThrowIfNull(item); + item.HdrMode = item.HdrMode switch + { + PresetHdrMode.Retain => PresetHdrMode.Enable, + PresetHdrMode.Enable => PresetHdrMode.Disable, + _ => PresetHdrMode.Retain + }; + if (item.IsPrimary) + { + HdrMode = item.HdrMode; + } + + SyncMonitorsToBackingLists(); + } + + public void MoveMonitorOnStage(PresetMonitorCanvasItemViewModel item, int newX, int newY) + { + ArgumentNullException.ThrowIfNull(item); + int snappedX = newX; + int snappedY = newY; + + foreach (var other in StageMonitors) + { + if (ReferenceEquals(other, item)) + { + continue; + } + + // Horizontal edge snapping (left-to-right, right-to-left, left-to-left) + if (Math.Abs((newX + item.Width) - other.PositionX) <= SnapThresholdPixels) + { + snappedX = other.PositionX - item.Width; + } + else if (Math.Abs(newX - (other.PositionX + other.Width)) <= SnapThresholdPixels) + { + snappedX = other.PositionX + other.Width; + } + else if (Math.Abs(newX - other.PositionX) <= SnapThresholdPixels) + { + snappedX = other.PositionX; + } + + // Vertical edge snapping (top-to-top, top-to-bottom, bottom-to-top) + if (Math.Abs(newY - other.PositionY) <= SnapThresholdPixels) + { + snappedY = other.PositionY; + } + else if (Math.Abs((newY + item.Height) - other.PositionY) <= SnapThresholdPixels) + { + snappedY = other.PositionY - item.Height; + } + else if (Math.Abs(newY - (other.PositionY + other.Height)) <= SnapThresholdPixels) + { + snappedY = other.PositionY + other.Height; + } + } + + item.PositionX = snappedX; + item.PositionY = snappedY; + + if (item.IsPrimary && (item.PositionX != 0 || item.PositionY != 0)) + { + SetPrimaryMonitor(item); + return; + } + + SyncMonitorsToBackingLists(); + UpdateCanvasLayoutPositions(); + } + + public void CaptureWindowsLayout() + { + if (_latestDisplays.Count == 0) + { + return; + } + + StageMonitors.Clear(); + UnassignedMonitors.Clear(); + _monitorPlacements.Clear(); + + int num = 1; + foreach (var d in _latestDisplays) + { + string label = ResolveDisplayName(d.MonitorId, d.FriendlyName); + var existingPlacement = _monitorPlacements.FirstOrDefault(p => string.Equals(p.MonitorId, d.MonitorId, StringComparison.OrdinalIgnoreCase)); + var hdr = existingPlacement?.HdrMode ?? (d.IsHdrEnabled ? PresetHdrMode.Enable : HdrMode); + + var item = new PresetMonitorCanvasItemViewModel( + displayNumber: num++, + monitorId: d.MonitorId, + friendlyName: label, + positionX: d.PositionX, + positionY: d.PositionY, + width: d.Width, + height: d.Height, + isPrimary: d.IsPrimary, + hdrMode: hdr, + isOnStage: d.IsActive, + isConnected: true, + setPrimaryAction: SetPrimaryMonitor, + cycleHdrAction: CycleMonitorHdr, + removeFromStageAction: RemoveMonitorFromStage, + addToStageAction: AddMonitorToStage); + + if (d.IsActive) + { + StageMonitors.Add(item); + } + else + { + UnassignedMonitors.Add(item); + } + } + + if (StageMonitors.Count > 0 && !StageMonitors.Any(m => m.IsPrimary)) + { + StageMonitors[0].IsPrimary = true; + } + + SyncMonitorsToBackingLists(); + UpdateCanvasLayoutPositions(); + } + + public void AddAudioEndpoint(string? endpointId) + { + if (string.IsNullOrWhiteSpace(endpointId)) + { + return; + } + + if (_audioPriorityIds.Any(id => DeviceOptionResolver.MatchesEndpoint(id, endpointId))) + { + return; + } + + _audioPriorityIds.Add(endpointId); + SyncRankingToLegacyAudioProperties(); + RebuildRankedCollections(); + } + + public void MoveAudioUp(RankedAudioItemViewModel item) + { + int idx = AudioRanking.IndexOf(item); + if (idx <= 0) + { + return; + } + + (_audioPriorityIds[idx - 1], _audioPriorityIds[idx]) = (_audioPriorityIds[idx], _audioPriorityIds[idx - 1]); + SyncRankingToLegacyAudioProperties(); + RebuildRankedCollections(); + } + + public void MoveAudioDown(RankedAudioItemViewModel item) + { + int idx = AudioRanking.IndexOf(item); + if (idx < 0 || idx >= AudioRanking.Count - 1) + { + return; + } + + (_audioPriorityIds[idx], _audioPriorityIds[idx + 1]) = (_audioPriorityIds[idx + 1], _audioPriorityIds[idx]); + SyncRankingToLegacyAudioProperties(); + RebuildRankedCollections(); + } + + public void RemoveAudioFromRanking(RankedAudioItemViewModel item) + { + _audioPriorityIds.RemoveAll(id => DeviceOptionResolver.MatchesEndpoint(id, item.EndpointId)); + SyncRankingToLegacyAudioProperties(); + RebuildRankedCollections(); + } + + public void AddMicrophoneEndpoint(string? endpointId) + { + if (string.IsNullOrWhiteSpace(endpointId)) + { + return; + } + + if (_microphonePriorityIds.Any(id => DeviceOptionResolver.MatchesEndpoint(id, endpointId))) + { + return; + } + + _microphonePriorityIds.Add(endpointId); + SyncRankingToLegacyMicrophoneProperties(); + RebuildRankedCollections(); + } + + public void MoveMicrophoneUp(RankedAudioItemViewModel item) + { + int idx = MicrophoneRanking.IndexOf(item); + if (idx <= 0) + { + return; + } + + (_microphonePriorityIds[idx - 1], _microphonePriorityIds[idx]) = (_microphonePriorityIds[idx], _microphonePriorityIds[idx - 1]); + SyncRankingToLegacyMicrophoneProperties(); + RebuildRankedCollections(); + } + + public void MoveMicrophoneDown(RankedAudioItemViewModel item) + { + int idx = MicrophoneRanking.IndexOf(item); + if (idx < 0 || idx >= MicrophoneRanking.Count - 1) + { + return; + } + + (_microphonePriorityIds[idx], _microphonePriorityIds[idx + 1]) = (_microphonePriorityIds[idx + 1], _microphonePriorityIds[idx]); + SyncRankingToLegacyMicrophoneProperties(); + RebuildRankedCollections(); + } + + public void RemoveMicrophoneFromRanking(RankedAudioItemViewModel item) + { + _microphonePriorityIds.RemoveAll(id => DeviceOptionResolver.MatchesEndpoint(id, item.EndpointId)); + SyncRankingToLegacyMicrophoneProperties(); + RebuildRankedCollections(); + } + + private void RebuildMonitorStageAndTray() + { + StageMonitors.Clear(); + UnassignedMonitors.Clear(); + + var enabledIds = new List(); + if (_monitorPlacements.Count > 0) + { + foreach (var p in _monitorPlacements.OrderByDescending(x => x.IsPrimary)) + { + if (!string.IsNullOrWhiteSpace(p.MonitorId) && !enabledIds.Contains(p.MonitorId, StringComparer.OrdinalIgnoreCase)) + { + enabledIds.Add(p.MonitorId); + } + } + } + + foreach (var id in _targetMonitorIds) + { + if (!string.IsNullOrWhiteSpace(id) && !enabledIds.Contains(id, StringComparer.OrdinalIgnoreCase)) + { + enabledIds.Add(id); + } + } + + int displayNum = 1; + var seenIds = new HashSet(StringComparer.OrdinalIgnoreCase); + int autoX = 0; + + foreach (var monId in enabledIds) + { + var matchedDisplay = _latestDisplays.FirstOrDefault(d => string.Equals(d.MonitorId, monId, StringComparison.OrdinalIgnoreCase)); + var existingPlacement = _monitorPlacements.FirstOrDefault(p => string.Equals(p.MonitorId, monId, StringComparison.OrdinalIgnoreCase)); + + int width = existingPlacement?.Width ?? matchedDisplay?.Width ?? 1920; + int height = existingPlacement?.Height ?? matchedDisplay?.Height ?? 1080; + bool isPrimary = existingPlacement?.IsPrimary ?? (StageMonitors.Count == 0); + int posX = existingPlacement?.PositionX ?? (isPrimary ? 0 : autoX); + int posY = existingPlacement?.PositionY ?? 0; + var hdr = existingPlacement?.HdrMode ?? HdrMode; + + autoX = Math.Max(autoX, posX + width); + + string friendly = ResolveDisplayName(monId, matchedDisplay?.FriendlyName); + var vm = new PresetMonitorCanvasItemViewModel( + displayNumber: displayNum++, + monitorId: monId, + friendlyName: friendly, + positionX: posX, + positionY: posY, + width: width, + height: height, + isPrimary: isPrimary, + hdrMode: hdr, + isOnStage: true, + isConnected: matchedDisplay != null, + setPrimaryAction: SetPrimaryMonitor, + cycleHdrAction: CycleMonitorHdr, + removeFromStageAction: RemoveMonitorFromStage, + addToStageAction: AddMonitorToStage); + + StageMonitors.Add(vm); + seenIds.Add(monId); + } + + foreach (var d in _latestDisplays) + { + if (seenIds.Contains(d.MonitorId)) + { + continue; + } + + string friendly = ResolveDisplayName(d.MonitorId, d.FriendlyName); + var vm = new PresetMonitorCanvasItemViewModel( + displayNumber: displayNum++, + monitorId: d.MonitorId, + friendlyName: friendly, + positionX: d.PositionX, + positionY: d.PositionY, + width: d.Width, + height: d.Height, + isPrimary: false, + hdrMode: HdrMode, + isOnStage: false, + isConnected: true, + setPrimaryAction: SetPrimaryMonitor, + cycleHdrAction: CycleMonitorHdr, + removeFromStageAction: RemoveMonitorFromStage, + addToStageAction: AddMonitorToStage); + + UnassignedMonitors.Add(vm); + seenIds.Add(d.MonitorId); + } + + if (StageMonitors.Count > 0 && !StageMonitors.Any(m => m.IsPrimary)) + { + StageMonitors[0].IsPrimary = true; + } + + SyncMonitorsToBackingLists(); + UpdateCanvasLayoutPositions(); + } + + public void UpdateCanvasLayoutPositions() + { + if (StageMonitors.Count == 0) + { + return; + } + + int minX = StageMonitors.Min(m => m.PositionX); + int minY = StageMonitors.Min(m => m.PositionY); + int maxX = StageMonitors.Max(m => m.PositionX + m.Width); + int maxY = StageMonitors.Max(m => m.PositionY + m.Height); + + int totalW = Math.Max(1920, maxX - minX); + int totalH = Math.Max(1080, maxY - minY); + + double scaleX = (StageReferenceWidth - 40) / totalW; + double scaleY = (StageReferenceHeight - 40) / totalH; + double scale = Math.Clamp(Math.Min(scaleX, scaleY), 0.028, StageScaleFactor); + + double contentW = totalW * scale; + double contentH = totalH * scale; + double padLeft = Math.Max(16, (StageReferenceWidth - contentW) / 2.0); + double padTop = Math.Max(16, (StageReferenceHeight - contentH) / 2.0); + + foreach (var mon in StageMonitors) + { + mon.CanvasWidth = Math.Max(96, Math.Round(mon.Width * scale)); + mon.CanvasHeight = Math.Max(58, Math.Round(mon.Height * scale)); + mon.CanvasLeft = Math.Round(padLeft + ((mon.PositionX - minX) * scale)); + mon.CanvasTop = Math.Round(padTop + ((mon.PositionY - minY) * scale)); + } + } + + private void SyncMonitorsToBackingLists() + { + var ordered = StageMonitors + .OrderByDescending(m => m.IsPrimary) + .ToList(); + + _monitorPlacements = ordered.Select(m => m.ToPlacement()).ToList(); + _targetMonitorIds = ordered.Select(m => m.MonitorId).ToList(); + _targetMonitorId = _targetMonitorIds.Count > 0 ? _targetMonitorIds[0] : string.Empty; + OnPropertyChanged(nameof(TargetMonitorId)); + OnPropertyChanged(nameof(TargetMonitorIds)); + } + + private void RebuildRankedCollections() + { + AudioRanking.Clear(); + for (int i = 0; i < _audioPriorityIds.Count; i++) + { + string id = _audioPriorityIds[i]; + var ep = _latestAudioEndpoints.FirstOrDefault(e => DeviceOptionResolver.MatchesEndpoint(e.Id, id)); + string display = ResolveAudioDisplayName(id, ep?.Name); + AudioRanking.Add(new RankedAudioItemViewModel( + rank: i + 1, + endpointId: id, + displayName: display, + hardwareName: ep?.Name ?? id, + state: ep?.State ?? DevicePresenceState.NotPresent, + isDefaultActive: ep?.IsDefaultPlayback ?? false, + moveUpAction: MoveAudioUp, + moveDownAction: MoveAudioDown, + removeAction: RemoveAudioFromRanking)); + } + + MicrophoneRanking.Clear(); + for (int i = 0; i < _microphonePriorityIds.Count; i++) + { + string id = _microphonePriorityIds[i]; + var ep = _latestAudioEndpoints.FirstOrDefault(e => DeviceOptionResolver.MatchesEndpoint(e.Id, id)); + string display = ResolveAudioDisplayName(id, ep?.Name); + MicrophoneRanking.Add(new RankedAudioItemViewModel( + rank: i + 1, + endpointId: id, + displayName: display, + hardwareName: ep?.Name ?? id, + state: ep?.State ?? DevicePresenceState.NotPresent, + isDefaultActive: ep?.IsDefaultCapture ?? false, + moveUpAction: MoveMicrophoneUp, + moveDownAction: MoveMicrophoneDown, + removeAction: RemoveMicrophoneFromRanking)); + } + + AddableAudioOptions.Clear(); + var allowedAudio = DeviceOptionResolver.FilterBlacklistedEndpoints(_latestAudioEndpoints, _blacklistedIds); + foreach (var ep in allowedAudio.Where(e => e.Flow == AudioDeviceFlow.Playback && e.State != DevicePresenceState.NotPresent)) + { + if (!_audioPriorityIds.Any(id => DeviceOptionResolver.MatchesEndpoint(id, ep.Id))) + { + AddableAudioOptions.Add(new DeviceSelectionOption(ep.Id, ResolveAudioDisplayName(ep.Id, ep.Name))); + } + } + SelectedAudioToAddId = AddableAudioOptions.FirstOrDefault()?.Id ?? string.Empty; + + AddableMicrophoneOptions.Clear(); + foreach (var ep in allowedAudio.Where(e => e.Flow == AudioDeviceFlow.Capture && e.State != DevicePresenceState.NotPresent)) + { + if (!_microphonePriorityIds.Any(id => DeviceOptionResolver.MatchesEndpoint(id, ep.Id))) + { + AddableMicrophoneOptions.Add(new DeviceSelectionOption(ep.Id, ResolveAudioDisplayName(ep.Id, ep.Name))); + } + } + SelectedMicToAddId = AddableMicrophoneOptions.FirstOrDefault()?.Id ?? string.Empty; + } + + private void SyncRankingToLegacyAudioProperties() + { + PrimaryAudioId = _audioPriorityIds.Count > 0 ? _audioPriorityIds[0] : string.Empty; + SecondaryAudioId = _audioPriorityIds.Count > 1 ? _audioPriorityIds[1] : string.Empty; + FallbackAudioId = _audioPriorityIds.Count > 2 ? _audioPriorityIds[2] : string.Empty; + } + + private void SyncRankingToLegacyMicrophoneProperties() + { + PrimaryMicrophoneId = _microphonePriorityIds.Count > 0 ? _microphonePriorityIds[0] : string.Empty; + SecondaryMicrophoneId = _microphonePriorityIds.Count > 1 ? _microphonePriorityIds[1] : string.Empty; + FallbackMicrophoneId = _microphonePriorityIds.Count > 2 ? _microphonePriorityIds[2] : string.Empty; + } + + private string ResolveDisplayName(string monitorId, string? fallbackHardwareName) + { + if (_customNames.TryGetValue(monitorId, out var custom) && !string.IsNullOrWhiteSpace(custom)) + { + return custom; + } + + if (!string.IsNullOrWhiteSpace(fallbackHardwareName)) + { + return fallbackHardwareName; + } + + if (_cachedNames.TryGetValue(monitorId, out var cached) && !string.IsNullOrWhiteSpace(cached)) + { + return cached; + } + + return monitorId; + } + + private string ResolveAudioDisplayName(string endpointId, string? hardwareName) + { + string? custom = null; + foreach (var (k, v) in _customNames) + { + if (DeviceOptionResolver.MatchesEndpoint(k, endpointId) && !string.IsNullOrWhiteSpace(v)) + { + custom = v; + break; + } + } + + string baseName = hardwareName ?? string.Empty; + if (string.IsNullOrWhiteSpace(baseName)) + { + foreach (var (k, v) in _cachedNames) + { + if (DeviceOptionResolver.MatchesEndpoint(k, endpointId) && !string.IsNullOrWhiteSpace(v)) + { + baseName = v; + break; + } + } + } + + if (!string.IsNullOrWhiteSpace(custom) && !string.IsNullOrWhiteSpace(baseName)) + { + return $"{custom} ({baseName})"; + } + + if (!string.IsNullOrWhiteSpace(custom)) + { + return custom; + } + + return !string.IsNullOrWhiteSpace(baseName) ? baseName : endpointId; } private void RemoveApplicationHook(ApplicationHookItemViewModel hook) @@ -379,12 +1076,47 @@ public void ApplyTo(WorkstationPreset target) target.Name = Name; target.TargetMonitorIds = [.. TargetMonitorIds]; target.TargetMonitorId = TargetMonitorId; - target.PrimaryAudioId = PrimaryAudioId; - target.SecondaryAudioId = SecondaryAudioId; - target.FallbackAudioId = FallbackAudioId; - target.PrimaryMicrophoneId = PrimaryMicrophoneId; - target.SecondaryMicrophoneId = SecondaryMicrophoneId; - target.FallbackMicrophoneId = FallbackMicrophoneId; + target.MonitorPlacements = _monitorPlacements.Select(p => p with { }).ToList(); + + // Keep ranked lists and legacy properties synchronized + bool legacyAudioMatchesRankTop = + string.Equals(_audioPriorityIds.ElementAtOrDefault(0) ?? string.Empty, PrimaryAudioId, StringComparison.OrdinalIgnoreCase) && + string.Equals(_audioPriorityIds.ElementAtOrDefault(1) ?? string.Empty, SecondaryAudioId, StringComparison.OrdinalIgnoreCase) && + string.Equals(_audioPriorityIds.ElementAtOrDefault(2) ?? string.Empty, FallbackAudioId, StringComparison.OrdinalIgnoreCase); + + if (_audioPriorityIds.Count > 0 && legacyAudioMatchesRankTop) + { + target.AudioPriorityIds = [.. _audioPriorityIds]; + target.SyncLegacyAudioFieldsFromPriorityList(); + } + else + { + target.PrimaryAudioId = PrimaryAudioId; + target.SecondaryAudioId = SecondaryAudioId; + target.FallbackAudioId = FallbackAudioId; + target.AudioPriorityIds = []; + target.AudioPriorityIds = [.. target.GetEffectiveAudioPriorityList()]; + } + + bool legacyMicMatchesRankTop = + string.Equals(_microphonePriorityIds.ElementAtOrDefault(0) ?? string.Empty, PrimaryMicrophoneId, StringComparison.OrdinalIgnoreCase) && + string.Equals(_microphonePriorityIds.ElementAtOrDefault(1) ?? string.Empty, SecondaryMicrophoneId, StringComparison.OrdinalIgnoreCase) && + string.Equals(_microphonePriorityIds.ElementAtOrDefault(2) ?? string.Empty, FallbackMicrophoneId, StringComparison.OrdinalIgnoreCase); + + if (_microphonePriorityIds.Count > 0 && legacyMicMatchesRankTop) + { + target.MicrophonePriorityIds = [.. _microphonePriorityIds]; + target.SyncLegacyMicrophoneFieldsFromPriorityList(); + } + else + { + target.PrimaryMicrophoneId = PrimaryMicrophoneId; + target.SecondaryMicrophoneId = SecondaryMicrophoneId; + target.FallbackMicrophoneId = FallbackMicrophoneId; + target.MicrophonePriorityIds = []; + target.MicrophonePriorityIds = [.. target.GetEffectiveMicrophonePriorityList()]; + } + target.PlaybackVolume = new AudioVolumeSettings(PlaybackVolumeMode, PlaybackVolumePercent, PlaybackVolumeIsMuted); target.MicrophoneVolume = new AudioVolumeSettings(MicrophoneVolumeMode, MicrophoneVolumePercent, MicrophoneVolumeIsMuted); target.HdrMode = HdrMode; @@ -402,6 +1134,9 @@ public void UpdateFrom(WorkstationPreset preset) Name = preset.Name; TargetMonitorIds = [.. preset.TargetMonitorIds]; TargetMonitorId = preset.TargetMonitorId; + _monitorPlacements = preset.MonitorPlacements?.Select(p => p with { }).ToList() ?? []; + _audioPriorityIds = [.. preset.GetEffectiveAudioPriorityList()]; + _microphonePriorityIds = [.. preset.GetEffectiveMicrophonePriorityList()]; PrimaryAudioId = preset.PrimaryAudioId; SecondaryAudioId = preset.SecondaryAudioId ?? string.Empty; FallbackAudioId = preset.FallbackAudioId; @@ -424,6 +1159,9 @@ public void UpdateFrom(WorkstationPreset preset) ApplicationHooks.Add(new ApplicationHookItemViewModel(hook, RemoveApplicationHook)); } } + + RebuildMonitorStageAndTray(); + RebuildRankedCollections(); } private static void LaunchDisplaySettings() diff --git a/src/RigSwitch.App/ViewModels/PresetMonitorCanvasItemViewModel.cs b/src/RigSwitch.App/ViewModels/PresetMonitorCanvasItemViewModel.cs new file mode 100644 index 0000000..c8fab34 --- /dev/null +++ b/src/RigSwitch.App/ViewModels/PresetMonitorCanvasItemViewModel.cs @@ -0,0 +1,225 @@ +namespace RigSwitch.App.ViewModels; + +using System.Windows.Input; +using RigSwitch.Core.Enums; +using RigSwitch.Core.Models; + +/// +/// View model representing a single monitor item on a preset's 2D spatial topology canvas or in its unassigned tray. +/// +public sealed class PresetMonitorCanvasItemViewModel : ViewModelBase +{ + private int _positionX; + private int _positionY; + private int _width = 1920; + private int _height = 1080; + private double _canvasLeft; + private double _canvasTop; + private double _canvasWidth = 140; + private double _canvasHeight = 82; + private bool _isPrimary; + private PresetHdrMode _hdrMode = PresetHdrMode.Retain; + private bool _isOnStage; + private string _friendlyName; + + public PresetMonitorCanvasItemViewModel( + int displayNumber, + string monitorId, + string friendlyName, + int positionX = 0, + int positionY = 0, + int width = 1920, + int height = 1080, + bool isPrimary = false, + PresetHdrMode hdrMode = PresetHdrMode.Retain, + bool isOnStage = true, + bool isConnected = true, + Action? setPrimaryAction = null, + Action? cycleHdrAction = null, + Action? removeFromStageAction = null, + Action? addToStageAction = null) + { + DisplayNumber = displayNumber; + MonitorId = monitorId ?? string.Empty; + _friendlyName = string.IsNullOrWhiteSpace(friendlyName) ? MonitorId : friendlyName; + _positionX = positionX; + _positionY = positionY; + _width = width > 0 ? width : 1920; + _height = height > 0 ? height : 1080; + _isPrimary = isPrimary; + _hdrMode = hdrMode; + _isOnStage = isOnStage; + IsConnected = isConnected; + + SetPrimaryCommand = new RelayCommand(() => setPrimaryAction?.Invoke(this)); + CycleHdrCommand = new RelayCommand(() => cycleHdrAction?.Invoke(this)); + RemoveFromStageCommand = new RelayCommand(() => removeFromStageAction?.Invoke(this)); + AddToStageCommand = new RelayCommand(() => addToStageAction?.Invoke(this)); + } + + public int DisplayNumber { get; } + + public string MonitorId { get; } + + public bool IsConnected { get; } + + public string FriendlyName + { + get => _friendlyName; + set => SetProperty(ref _friendlyName, value); + } + + public int PositionX + { + get => _positionX; + set + { + if (SetProperty(ref _positionX, value)) + { + OnPropertyChanged(nameof(CoordinatesBadge)); + OnPropertyChanged(nameof(ResolutionAndPosText)); + } + } + } + + public int PositionY + { + get => _positionY; + set + { + if (SetProperty(ref _positionY, value)) + { + OnPropertyChanged(nameof(CoordinatesBadge)); + OnPropertyChanged(nameof(ResolutionAndPosText)); + } + } + } + + public int Width + { + get => _width; + set + { + if (SetProperty(ref _width, value > 0 ? value : 1920)) + { + OnPropertyChanged(nameof(ResolutionText)); + OnPropertyChanged(nameof(ResolutionAndPosText)); + } + } + } + + public int Height + { + get => _height; + set + { + if (SetProperty(ref _height, value > 0 ? value : 1080)) + { + OnPropertyChanged(nameof(ResolutionText)); + OnPropertyChanged(nameof(ResolutionAndPosText)); + } + } + } + + public double CanvasLeft + { + get => _canvasLeft; + set => SetProperty(ref _canvasLeft, value); + } + + public double CanvasTop + { + get => _canvasTop; + set => SetProperty(ref _canvasTop, value); + } + + public double CanvasWidth + { + get => _canvasWidth; + set => SetProperty(ref _canvasWidth, value); + } + + public double CanvasHeight + { + get => _canvasHeight; + set => SetProperty(ref _canvasHeight, value); + } + + public bool IsPrimary + { + get => _isPrimary; + set + { + if (SetProperty(ref _isPrimary, value)) + { + OnPropertyChanged(nameof(PrimaryBadgeText)); + OnPropertyChanged(nameof(BorderBrushHex)); + OnPropertyChanged(nameof(BackgroundHex)); + } + } + } + + public PresetHdrMode HdrMode + { + get => _hdrMode; + set + { + if (SetProperty(ref _hdrMode, value)) + { + OnPropertyChanged(nameof(HdrBadgeText)); + OnPropertyChanged(nameof(HdrBadgeBackground)); + OnPropertyChanged(nameof(HdrBadgeForeground)); + } + } + } + + public bool IsOnStage + { + get => _isOnStage; + set => SetProperty(ref _isOnStage, value); + } + + public string PrimaryBadgeText => IsPrimary ? "β˜… Primary (0,0)" : "β˜† Make Primary"; + + public string CoordinatesBadge => $"({PositionX}, {PositionY})"; + + public string ResolutionText => $"{Width}Γ—{Height}"; + + public string ResolutionAndPosText => $"{Width}Γ—{Height} β€’ ({PositionX}, {PositionY})"; + + public string HdrBadgeText => HdrMode switch + { + PresetHdrMode.Enable => "HDR: Enable", + PresetHdrMode.Disable => "HDR: Disable", + _ => "HDR: Retain" + }; + + public string HdrBadgeBackground => HdrMode switch + { + PresetHdrMode.Enable => "#2E2510", + PresetHdrMode.Disable => "#2B161B", + _ => "#1E2230" + }; + + public string HdrBadgeForeground => HdrMode switch + { + PresetHdrMode.Enable => "#FFB300", + PresetHdrMode.Disable => "#FF5252", + _ => "#9BA3B5" + }; + + public string BorderBrushHex => IsPrimary ? "#00E676" : "#3B82F6"; + + public string BackgroundHex => IsPrimary ? "#11281E" : "#131C2E"; + + public ICommand SetPrimaryCommand { get; } + + public ICommand CycleHdrCommand { get; } + + public ICommand RemoveFromStageCommand { get; } + + public ICommand AddToStageCommand { get; } + + public MonitorPlacement ToPlacement() => + new(MonitorId, PositionX, PositionY, Width, Height, IsPrimary, HdrMode); +} diff --git a/src/RigSwitch.App/ViewModels/RankedAudioItemViewModel.cs b/src/RigSwitch.App/ViewModels/RankedAudioItemViewModel.cs new file mode 100644 index 0000000..44016a3 --- /dev/null +++ b/src/RigSwitch.App/ViewModels/RankedAudioItemViewModel.cs @@ -0,0 +1,111 @@ +namespace RigSwitch.App.ViewModels; + +using System.Windows.Input; +using RigSwitch.Core.Enums; + +/// +/// View model representing a single ranked playback or capture audio endpoint in a preset's priority list. +/// +public sealed class RankedAudioItemViewModel : ViewModelBase +{ + private int _rank; + private string _displayName; + private DevicePresenceState _state; + private bool _isDefaultActive; + + public RankedAudioItemViewModel( + int rank, + string endpointId, + string displayName, + string hardwareName, + DevicePresenceState state = DevicePresenceState.Active, + bool isDefaultActive = false, + Action? moveUpAction = null, + Action? moveDownAction = null, + Action? removeAction = null) + { + _rank = rank; + EndpointId = endpointId ?? string.Empty; + _displayName = string.IsNullOrWhiteSpace(displayName) ? EndpointId : displayName; + HardwareName = hardwareName ?? string.Empty; + _state = state; + _isDefaultActive = isDefaultActive; + + MoveUpCommand = new RelayCommand(() => moveUpAction?.Invoke(this)); + MoveDownCommand = new RelayCommand(() => moveDownAction?.Invoke(this)); + RemoveCommand = new RelayCommand(() => removeAction?.Invoke(this)); + } + + public string EndpointId { get; } + + public string HardwareName { get; } + + public int Rank + { + get => _rank; + set + { + if (SetProperty(ref _rank, value)) + { + OnPropertyChanged(nameof(RankBadgeText)); + } + } + } + + public string RankBadgeText => $"#{Rank}"; + + public string DisplayName + { + get => _displayName; + set => SetProperty(ref _displayName, value); + } + + public DevicePresenceState State + { + get => _state; + set + { + if (SetProperty(ref _state, value)) + { + NotifyStatusChanged(); + } + } + } + + public bool IsDefaultActive + { + get => _isDefaultActive; + set + { + if (SetProperty(ref _isDefaultActive, value)) + { + NotifyStatusChanged(); + } + } + } + + public string StatusText => State == DevicePresenceState.Active + ? (IsDefaultActive ? "● Active Now" : "● Ready") + : "● Offline"; + + public string StatusBackground => State == DevicePresenceState.Active + ? (IsDefaultActive ? "#0D2818" : "#132238") + : "#231B24"; + + public string StatusForeground => State == DevicePresenceState.Active + ? (IsDefaultActive ? "#00E676" : "#60A5FA") + : "#9BA3B5"; + + public ICommand MoveUpCommand { get; } + + public ICommand MoveDownCommand { get; } + + public ICommand RemoveCommand { get; } + + private void NotifyStatusChanged() + { + OnPropertyChanged(nameof(StatusText)); + OnPropertyChanged(nameof(StatusBackground)); + OnPropertyChanged(nameof(StatusForeground)); + } +} diff --git a/tests/RigSwitch.Tests.Unit/MainSettingsViewModelRedesignTests.cs b/tests/RigSwitch.Tests.Unit/MainSettingsViewModelRedesignTests.cs new file mode 100644 index 0000000..e9dff13 --- /dev/null +++ b/tests/RigSwitch.Tests.Unit/MainSettingsViewModelRedesignTests.cs @@ -0,0 +1,191 @@ +namespace RigSwitch.Tests.Unit; + +using NSubstitute; +using RigSwitch.App.Services; +using RigSwitch.App.ViewModels; +using RigSwitch.Core.Enums; +using RigSwitch.Core.Interfaces; +using RigSwitch.Core.Models; +using Xunit; + +public sealed class MainSettingsViewModelRedesignTests : IDisposable +{ + private readonly IProfileSwitchCoordinator _coordinator = Substitute.For(); + private readonly ISettingsStorageService _settingsService = Substitute.For(); + private readonly IDisplayConfigurationService _displayService = Substitute.For(); + private readonly IAudioEndpointDirector _audioDirector = Substitute.For(); + private readonly IGlobalHotkeyService _hotkeyService = Substitute.For(); + private readonly TrayIconService _trayService; + + public MainSettingsViewModelRedesignTests() + { + _trayService = new TrayIconService(_coordinator, _settingsService); + } + + public void Dispose() + { + _trayService.Dispose(); + } + + [Fact] + public void AppVersionText_StartsWithVAndVersionNumbers() + { + using var vm = new MainSettingsViewModel( + _coordinator, + _settingsService, + _displayService, + _audioDirector, + _hotkeyService, + _trayService); + + Assert.Matches(@"^v\d+\.\d+", vm.AppVersionText); + } + + [Fact] + public async Task RelevantAudioFilter_HidesUnreferencedNotPresentGhosts_AndKeepsReferencedOnes() + { + var settings = new UserSettings + { + DeskPresets = + [ + new WorkstationPreset + { + AudioPriorityIds = ["{PEBBLE-AUX}", "{MONITOR-OLED}"] + } + ] + }; + + var endpoints = new List + { + new("{MONITOR-OLED}", "MPG341CX OLED", "NVIDIA", DevicePresenceState.Active, true, false, AudioDeviceFlow.Playback), + new("{PEBBLE-AUX}", "Speakers (Pebble V3)", "USB", DevicePresenceState.NotPresent, false, false, AudioDeviceFlow.Playback), + new("{GHOST-HDMI-1}", "Old TV Audio 2021", "NVIDIA", DevicePresenceState.NotPresent, false, false, AudioDeviceFlow.Playback), + new("{DISABLED-OCULUS}", "Oculus Virtual Audio", "Oculus", DevicePresenceState.Disabled, false, false, AudioDeviceFlow.Playback) + }; + + _settingsService.LoadSettingsAsync(Arg.Any()).Returns(settings); + _displayService.EnumerateDisplaysAsync(Arg.Any()).Returns([]); + _audioDirector.EnumerateAudioEndpointsAsync(Arg.Any()).Returns(endpoints); + + using var vm = new MainSettingsViewModel( + _coordinator, + _settingsService, + _displayService, + _audioDirector, + _hotkeyService, + _trayService); + + await vm.LoadAsync(); + + Assert.True(vm.IsRelevantFilterSelected); + var visibleItems = vm.FilteredAudioEndpoints!.Cast().ToList(); + + Assert.Equal(3, visibleItems.Count); + Assert.Contains(visibleItems, x => x.Id == "{MONITOR-OLED}"); + Assert.Contains(visibleItems, x => x.Id == "{PEBBLE-AUX}"); + Assert.Contains(visibleItems, x => x.Id == "{DISABLED-OCULUS}"); + Assert.DoesNotContain(visibleItems, x => x.Id == "{GHOST-HDMI-1}"); + + // Switching to All Registry Ghosts shows all 4 + vm.SelectAllAudioFilterCommand.Execute(null); + var allItems = vm.FilteredAudioEndpoints!.Cast().ToList(); + Assert.Equal(4, allItems.Count); + } + + [Fact] + public async Task AddAndRemoveNickname_MovesDeviceBetweenUnnicknamedAndConfiguredCollections() + { + var settings = new UserSettings(); + settings.CustomDeviceNames["MON1"] = "Main Desk OLED"; + + _settingsService.LoadSettingsAsync(Arg.Any()).Returns(settings); + _displayService.EnumerateDisplaysAsync(Arg.Any()).Returns([ + new DisplayDeviceInfo("MON1", @"\\.\DISPLAY1", "MPG341CX OLED", "NVIDIA", true, true), + new DisplayDeviceInfo("MON2", @"\\.\DISPLAY2", "VG34VQL3A", "NVIDIA", false, false) + ]); + _audioDirector.EnumerateAudioEndpointsAsync(Arg.Any()).Returns([ + new AudioEndpointInfo("{SPK1}", "Pebble V3", "USB", DevicePresenceState.Active, true, false, AudioDeviceFlow.Playback) + ]); + + using var vm = new MainSettingsViewModel( + _coordinator, + _settingsService, + _displayService, + _audioDirector, + _hotkeyService, + _trayService); + + await vm.LoadAsync(); + + Assert.Single(vm.ConfiguredNicknames); + Assert.Equal("MON1", vm.ConfiguredNicknames[0].DeviceId); + Assert.DoesNotContain(vm.UnnicknamedDeviceOptions, x => x.Id == "MON1"); + Assert.Contains(vm.UnnicknamedDeviceOptions, x => x.Id == "MON2"); + Assert.Contains(vm.UnnicknamedDeviceOptions, x => x.Id == "{SPK1}"); + + // Add nickname for MON2 + vm.SelectedNewNicknameDeviceId = "MON2"; + vm.NewNicknameText = "Sim Rig Ultrawide"; + vm.AddNicknameCommand.Execute(null); + + Assert.Equal(2, vm.ConfiguredNicknames.Count); + Assert.DoesNotContain(vm.UnnicknamedDeviceOptions, x => x.Id == "MON2"); + + // Remove nickname for MON1 + var mon1Item = vm.ConfiguredNicknames.First(x => x.DeviceId == "MON1"); + mon1Item.RemoveCommand.Execute(null); + + Assert.Single(vm.ConfiguredNicknames); + Assert.Contains(vm.UnnicknamedDeviceOptions, x => x.Id == "MON1"); + } + + [Fact] + public void PresetConfigurationItemViewModel_MonitorCanvasAndAudioRanking_ManipulatesCorrectly() + { + var preset = new WorkstationPreset + { + Name = "Desk Daily", + TargetMonitorIds = ["MON1"], + AudioPriorityIds = ["{AUD1}", "{AUD2}"] + }; + + var vm = new PresetConfigurationItemViewModel(preset, 0, "DeskGroup", true); + vm.HydrateHardwareContext( + displays: + [ + new DisplayDeviceInfo("MON1", @"\\.\DISPLAY1", "Desk OLED", "GPU", true, true, true, true, 0, 0, 3440, 1440), + new DisplayDeviceInfo("MON2", @"\\.\DISPLAY2", "Side Portrait", "GPU", true, false, false, false, 3440, 0, 1920, 1080) + ], + audioEndpoints: + [ + new AudioEndpointInfo("{AUD1}", "Pebble V3", "USB", DevicePresenceState.NotPresent, false, false, AudioDeviceFlow.Playback), + new AudioEndpointInfo("{AUD2}", "OLED Speakers", "NVIDIA", DevicePresenceState.Active, true, false, AudioDeviceFlow.Playback), + new AudioEndpointInfo("{AUD3}", "Headset", "USB", DevicePresenceState.Active, false, false, AudioDeviceFlow.Playback) + ], + customNames: new Dictionary(), + cachedNames: new Dictionary(), + blacklistedIds: []); + + Assert.Single(vm.StageMonitors); + Assert.Single(vm.UnassignedMonitors); + Assert.Equal("MON2", vm.UnassignedMonitors[0].MonitorId); + + // Add MON2 from tray to stage + vm.AddMonitorToStage(vm.UnassignedMonitors[0]); + Assert.Equal(2, vm.StageMonitors.Count); + Assert.Empty(vm.UnassignedMonitors); + + // Set MON2 as primary -> normalizes MON2 to (0,0) and shifts MON1 to (-3440, 0) + var mon2 = vm.StageMonitors.First(m => m.MonitorId == "MON2"); + vm.SetPrimaryMonitor(mon2); + Assert.True(mon2.IsPrimary); + Assert.Equal(0, mon2.PositionX); + Assert.Equal("MON2", vm.TargetMonitorId); + + // Move AUD2 up to #1 + var aud2Item = vm.AudioRanking.First(a => a.EndpointId == "{AUD2}"); + vm.MoveAudioUp(aud2Item); + Assert.Equal("{AUD2", vm.AudioRanking[0].EndpointId[..5]); + Assert.Equal("{AUD2}", vm.PrimaryAudioId); + } +} From c0ca289a5283b02084b408c952db647f54a54a41 Mon Sep 17 00:00:00 2001 From: Steven Pelech Date: Thu, 15 Oct 2026 14:05:35 -0500 Subject: [PATCH 07/13] feat: redesign preset UI with 2D monitor topology, ranked audio priority, and v1.4.0 layout --- Directory.Build.props | 1 + docs/screenshots/01_presets_view.png | Bin 2735 -> 114926 bytes .../screenshots/02_displays_topology_view.png | Bin 2735 -> 107878 bytes .../screenshots/03_audio_dac_lockout_view.png | Bin 2735 -> 109184 bytes docs/screenshots/04_device_nicknames_view.png | Bin 2735 -> 74871 bytes .../05_hotkeys_and_system_view.png | Bin 2735 -> 87133 bytes src/RigSwitch.App/Styles/FluentTheme.xaml | 26 + .../ViewModels/MainSettingsViewModel.cs | 16 +- .../PresetConfigurationItemViewModel.cs | 18 +- .../PresetMonitorCanvasItemViewModel.cs | 8 +- .../Views/MainSettingsWindow.xaml | 1648 +++++++++-------- .../Views/MainSettingsWindow.xaml.cs | 148 +- .../UiScreenshotCaptureTests.cs | 178 +- 13 files changed, 1209 insertions(+), 834 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index ef5220f..5ed69dc 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -6,5 +6,6 @@ true 13.0 latest-recommended + 1.4.0 diff --git a/docs/screenshots/01_presets_view.png b/docs/screenshots/01_presets_view.png index 91c2202d3174d5f648363788085eda86894868d1..0f09099aef5195931776a35870839013f4cc99cc 100644 GIT binary patch literal 114926 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

_0l{r0X_?l1DJ+ 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 BAaei! diff --git a/docs/screenshots/02_displays_topology_view.png b/docs/screenshots/02_displays_topology_view.png index 91c2202d3174d5f648363788085eda86894868d1..d195706c88205f66ac57cb7e5d2a255b99442760 100644 GIT binary patch literal 107878 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 BAaei! diff --git a/docs/screenshots/03_audio_dac_lockout_view.png b/docs/screenshots/03_audio_dac_lockout_view.png index 91c2202d3174d5f648363788085eda86894868d1..42e1b98884a46d5e5bc9f4eccea93b4068bf8ee5 100644 GIT binary patch literal 109184 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

&WD$%VI!9(9~TBu~FU72EJ?{qIH?ZC)mQ} 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 ra3b!X#|KjB70Q3PJwgA&CxBDAKKM+q)l>}nDN literal 2735 zcmeAS@N?(olHy`uVBq!ia0y~yU_QXWz_f>h4Je}Ecx@_>Vk{1FcVbv~PUa<$!;&U>cv7h@-A}f&3S>O>_%)r2R7=#&*=dVa%VBm7`ba4!+h?C* BAaei! diff --git a/docs/screenshots/04_device_nicknames_view.png b/docs/screenshots/04_device_nicknames_view.png index 91c2202d3174d5f648363788085eda86894868d1..cc7ceb878c965a3f798e5cb1991d027c674f532f 100644 GIT binary patch literal 74871 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

vdHR1{eD?I3G8Zavg*dXchIqACS5`JR(=vEv-u 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 literal 2735 zcmeAS@N?(olHy`uVBq!ia0y~yU_QXWz_f>h4Je}Ecx@_>Vk{1FcVbv~PUa<$!;&U>cv7h@-A}f&3S>O>_%)r2R7=#&*=dVa%VBm7`ba4!+h?C* BAaei! diff --git a/docs/screenshots/05_hotkeys_and_system_view.png b/docs/screenshots/05_hotkeys_and_system_view.png index 91c2202d3174d5f648363788085eda86894868d1..7b16209683c4372f933b956c58bdf7f7a73cd9e6 100644 GIT binary patch literal 87133 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®M$C&kIy}IA473s{k(-{+xeuhU>3`-Q`Q87y~{e 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 BAaei! diff --git a/src/RigSwitch.App/Styles/FluentTheme.xaml b/src/RigSwitch.App/Styles/FluentTheme.xaml index ca48542..98d27c1 100644 --- a/src/RigSwitch.App/Styles/FluentTheme.xaml +++ b/src/RigSwitch.App/Styles/FluentTheme.xaml @@ -557,6 +557,32 @@ + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + - - + + + - + + + + + + + + + + - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + +