Skip to content

feat: unified Settings drawer matching design philosophy#485

Merged
tylerkron merged 3 commits intomainfrom
claude/friendly-fermi-c54466
Apr 18, 2026
Merged

feat: unified Settings drawer matching design philosophy#485
tylerkron merged 3 commits intomainfrom
claude/friendly-fermi-c54466

Conversation

@tylerkron
Copy link
Copy Markdown
Contributor

Summary

Replaces the MahApps MetroWindow settings dialog with a right-side drawer at the app-window level, completing the trio with the Channels pane (#479) and Devices pane (#484). Settings are a separate surface but not a destructive fork, so the drawer reads better than a modal under docs/design-philosophy.md principle #4.

  • New: IsAppSettingsOpen flag + AppSettings (a SettingsViewModel) on DaqifiViewModel; drawer in MainWindow.xaml at Panel.ZIndex="20" so it overlays tabs and in-pane drawers; scrim click and × dismiss via CloseAppSettingsCommand.
  • Interaction: the title-bar cog is now a ToggleButton two-way bound to IsAppSettingsOpen, mirroring the adjacent debug toggle — the button carries visible active state while the drawer is open (principle DA-102: Desktop app benchmarking tool #7, ambient status).
  • Content: CSV delimiter uses a segmented COMMA , / SEMICOLON ; toggle instead of a ComboBox — two options, direct manipulation (principle trying dependabot on a traditional .net app #4). SettingsViewModel is now ObservableObject with bool selectors so the segmented toggle binds two-way.
  • Removed: SettingsDialog.xaml / .xaml.cs and the DialogService invocation.

Design philosophy notes

Drawer is 380px to match Channels (#479) and Devices (#484) — one visual system (principle #9). The dark palette is now duplicated a third time at the MainWindow level; consolidating the three surfaces into a shared ResourceDictionary remains the #479 follow-up.

Test plan

  • Click the title-bar settings cog → right-side drawer slides in; cog visibly carries its checked/active state
  • Click the cog a second time, or click the scrim, or click × → drawer closes and cog returns to unchecked
  • Drawer renders dark: PREFERENCES kicker, Settings title, EXPORT section label + divider, CSV delimiter row
  • Segmented toggle: clicking COMMA , and SEMICOLON ; selects exclusively; selected segment gets the active surface fill
  • Selection persists: close and reopen drawer — prior choice still selected
  • Changing delimiter writes to %CommonApplicationData%\DAQifi\DAQifiConfiguration.xml
  • Open any Channel or Device settings drawer first, then open app settings — app settings overlays cleanly (ZIndex 20 vs 10)
  • Empty state / no-device state unaffected; Live Graph, Logged Data, Channels, Devices, Profiles tabs all still render normally

🤖 Generated with Claude Code

tylerkron and others added 2 commits April 18, 2026 13:34
Replaces the MahApps MetroWindow settings dialog with a right-side
settings drawer at the app-window level, matching the Channels (#479)
and Devices (#484) panes. Preferences are a genuine separate surface
but not a destructive fork, so the drawer pattern fits the design
philosophy better than a modal.

- New IsAppSettingsOpen + AppSettings property on DaqifiViewModel, and
  Toggle/Close commands replacing ShowDAQiFiSettingsDialogCommand
- Drawer appended to MainWindow root Grid at ZIndex=20 so it overlays
  tab content and in-pane drawers; scrim click and X dismiss
- CSV delimiter uses a segmented COMMA/SEMICOLON toggle instead of a
  ComboBox — only two options and direct manipulation reads better
- SettingsViewModel upgraded to ObservableObject with bool selectors
  so the segmented toggle binds two-way
- Deletes SettingsDialog.xaml/.cs and the dialog-service invocation

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Drawer width 420 → 380 to match the Channels and Devices pane drawers.
- Settings cog in the title bar is now a ToggleButton two-way-bound to
  IsAppSettingsOpen so it carries visible active state while the drawer
  is open; the drawer's scrim/X still close it via CloseAppSettings.
- Removes the now-dead ToggleAppSettingsCommand.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@tylerkron tylerkron requested a review from a team as a code owner April 18, 2026 19:39
@qodo-code-review
Copy link
Copy Markdown
Contributor

Review Summary by Qodo

Replace settings modal with unified right-side drawer

✨ Enhancement

Grey Divider

Walkthroughs

Description
• Replace modal settings dialog with right-side drawer at app-window level
• Add IsAppSettingsOpen flag and AppSettings property to DaqifiViewModel
• Convert settings cog to ToggleButton with two-way binding to drawer state
• Upgrade SettingsViewModel to ObservableObject with bool selectors for CSV delimiter
• Replace ComboBox with segmented toggle for comma/semicolon delimiter selection
• Remove SettingsDialog.xaml/.cs and dialog service invocation
Diagram
flowchart LR
  A["Settings Cog<br/>ToggleButton"] -- "IsAppSettingsOpen" --> B["App Settings<br/>Drawer"]
  B -- "CloseAppSettingsCommand" --> A
  C["SettingsViewModel<br/>ObservableObject"] -- "IsCommaDelimiter<br/>IsSemicolonDelimiter" --> D["Segmented Toggle<br/>RadioButtons"]
  D -- "Two-way Binding" --> C
Loading

Grey Divider

File Changes

1. Daqifi.Desktop/View/SettingsDialog.xaml Miscellaneous +0/-37

Remove settings modal dialog XAML

• Deleted entire modal dialog XAML file
• Replaced by right-side drawer in MainWindow.xaml

Daqifi.Desktop/View/SettingsDialog.xaml


2. Daqifi.Desktop/View/SettingsDialog.xaml.cs Miscellaneous +0/-17

Remove settings dialog code-behind

• Deleted entire code-behind file for settings dialog
• Functionality moved to drawer in MainWindow.xaml

Daqifi.Desktop/View/SettingsDialog.xaml.cs


3. Daqifi.Desktop/ViewModels/DaqifiViewModel.cs ✨ Enhancement +5/-5

Add drawer state and settings view model

• Add IsAppSettingsOpen observable property to control drawer visibility
• Add AppSettings property instantiating SettingsViewModel
• Replace ShowDAQiFiSettingsDialog() command with CloseAppSettings() command
• Remove dialog service invocation for settings

Daqifi.Desktop/ViewModels/DaqifiViewModel.cs


View more (2)
4. Daqifi.Desktop/ViewModels/SettingsViewModel.cs ✨ Enhancement +22/-12

Upgrade to ObservableObject with bool selectors

• Convert class to inherit from ObservableObject for MVVM support
• Add IsCommaDelimiter and IsSemicolonDelimiter bool properties for segmented toggle binding
• Enhance CsvDelimiter property setter to notify dependent properties
• Remove CsvDelimiterOptions collection property (no longer needed)

Daqifi.Desktop/ViewModels/SettingsViewModel.cs


5. Daqifi.Desktop/MainWindow.xaml ✨ Enhancement +184/-4

Add right-side settings drawer with segmented toggle

• Convert settings button from Button to ToggleButton with two-way binding to
 IsAppSettingsOpen
• Add full-screen app settings drawer at Panel.ZIndex="20" with scrim overlay
• Define dark color palette resources for drawer (Surface, SurfaceRaised, SurfaceActive, borders,
 text colors)
• Create segmented toggle control using RadioButton style for comma/semicolon delimiter selection
• Add drawer header with "PREFERENCES" kicker, "Settings" title, and close button
• Add "EXPORT" section with CSV delimiter row and help text
• Implement scrim click and close button to dismiss drawer via CloseAppSettingsCommand

Daqifi.Desktop/MainWindow.xaml


Grey Divider

Qodo Logo

@qodo-code-review
Copy link
Copy Markdown
Contributor

qodo-code-review Bot commented Apr 18, 2026

Code Review by Qodo

🐞 Bugs (1) 📘 Rule violations (0) 📎 Requirement gaps (0)

Grey Divider


Action required

1. AppSettings missing XML docs📘 Rule violation ✧ Quality
Description
The newly added public AppSettings property is missing the required XML documentation comment.
This violates the requirement that new/modified public API members include /// <summary>
documentation.
Code

Daqifi.Desktop/ViewModels/DaqifiViewModel.cs[R67-70]

+    [ObservableProperty]
+    private bool _isAppSettingsOpen;
+
+    public SettingsViewModel AppSettings { get; } = new();
Evidence
The checklist requires XML documentation comments for all new or modified public members.
AppSettings is a new public property without any preceding /// XML doc comment.

Rule 244813: Require XML documentation comments for all public API members
Daqifi.Desktop/ViewModels/DaqifiViewModel.cs[67-70]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
A new public property (`AppSettings`) was added without an XML documentation comment.

## Issue Context
Compliance requires `/// <summary>` XML documentation for all new/modified public API members.

## Fix Focus Areas
- Daqifi.Desktop/ViewModels/DaqifiViewModel.cs[67-70]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


2. Inline braces in IsCommaDelimiter📘 Rule violation ✧ Quality
Description
SettingsViewModel.IsCommaDelimiter and IsSemicolonDelimiter use inline { ... } blocks on the
same line as the setter, violating the required Allman brace style. This reduces consistency with
the project’s mandated formatting rules.
Code

Daqifi.Desktop/ViewModels/SettingsViewModel.cs[R23-33]

+    public bool IsCommaDelimiter
    {
-        get => _settings.CsvDelimiter;
-        set => _settings.CsvDelimiter = value;
+        get => CsvDelimiter == ",";
+        set { if (value) CsvDelimiter = ","; }
+    }
+
+    public bool IsSemicolonDelimiter
+    {
+        get => CsvDelimiter == ";";
+        set { if (value) CsvDelimiter = ";"; }
    }
-    #endregion
-}
Evidence
The Allman style rule requires opening braces to be on their own line. The setters for
IsCommaDelimiter and IsSemicolonDelimiter place { on the same line as set.

Rule 244808: Use Allman style for opening braces
Daqifi.Desktop/ViewModels/SettingsViewModel.cs[23-33]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`SettingsViewModel` contains property setters with inline braces (`set { ... }`), which violates the required Allman brace style.

## Issue Context
The compliance checklist requires opening braces `{` to be placed on their own line for C# constructs.

## Fix Focus Areas
- Daqifi.Desktop/ViewModels/SettingsViewModel.cs[23-33]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


3. Long XAML line 1258📘 Rule violation ✧ Quality
Description
The added XAML line containing the ToolTip attribute exceeds the 120 character maximum (including
indentation). This breaks the project’s maximum line-length requirement and reduces readability in
diffs/reviews.
Code

Daqifi.Desktop/MainWindow.xaml[1258]

+                                                     ToolTip="Use when your locale treats comma as the decimal separator."/>
Evidence
The compliance checklist enforces a 120-character maximum line length for added/modified lines. The
new ToolTip=... line is heavily indented and contains a long string literal, pushing it beyond 120
characters.

Rule 244820: Enforce maximum line length of 120 characters
Daqifi.Desktop/MainWindow.xaml[1258-1258]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
An added XAML line exceeds the 120-character limit due to indentation + a long `ToolTip` attribute value.

## Issue Context
Compliance requires that no added/modified line exceeds 120 characters.

## Fix Focus Areas
- Daqifi.Desktop/MainWindow.xaml[1258-1258]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

4. Eager settings file IO🐞 Bug ☼ Reliability
Description
DaqifiViewModel now eagerly constructs AppSettings at field initialization, which forces
DaqifiSettings.Instance to run filesystem reads/writes under %CommonApplicationData% during
MainWindow startup and in any unit test that instantiates DaqifiViewModel. This increases startup
cost and can cause test/CI flakiness or permission-related failures unrelated to opening Settings.
Code

Daqifi.Desktop/ViewModels/DaqifiViewModel.cs[R67-70]

+    [ObservableProperty]
+    private bool _isAppSettingsOpen;
+
+    public SettingsViewModel AppSettings { get; } = new();
Evidence
MainWindow creates DaqifiViewModel at startup; the new AppSettings field initializer constructs
SettingsViewModel immediately, which references DaqifiSettings.Instance. DaqifiSettings eagerly
loads/creates the settings directory and loads the XML file in its constructor, causing disk I/O as
a side effect of simply creating the main VM.

Daqifi.Desktop/MainWindow.xaml.cs[15-43]
Daqifi.Desktop/ViewModels/DaqifiViewModel.cs[64-71]
Daqifi.Desktop/ViewModels/SettingsViewModel.cs[6-9]
Daqifi.Desktop/Models/DaqifiSettings.cs[30-67]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`DaqifiViewModel` eagerly constructs `AppSettings`, which triggers `DaqifiSettings.Instance` initialization and performs disk I/O during app startup and unit tests.

## Issue Context
`SettingsViewModel` grabs `DaqifiSettings.Instance` in a field initializer, and `DaqifiSettings` loads/creates `%CommonApplicationData%\\DAQifi` and reads `DAQifiConfiguration.xml` in its constructor.

## Fix Focus Areas
- Make `AppSettings` lazy (create only when settings drawer first opens), e.g. `SettingsViewModel? _appSettings; public SettingsViewModel AppSettings => _appSettings ??= new SettingsViewModel();`
- Optionally create `AppSettings` in an `OnIsAppSettingsOpenChanged(bool value)` partial method when `value == true` to avoid construction unless opened.

### Files/lines to change
- Daqifi.Desktop/ViewModels/DaqifiViewModel.cs[64-71]
- Daqifi.Desktop/ViewModels/SettingsViewModel.cs[6-9]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Advisory comments

5. Missing EOF newline 🐞 Bug ⚙ Maintainability
Description
MainWindow.xaml and SettingsViewModel.cs are committed without a trailing newline, which causes
noisy diffs and can break strict format/lint tooling. Add a final newline to both files.
Code

Daqifi.Desktop/MainWindow.xaml[R1268-1269]

    </Grid>
</controls:MetroWindow>
Evidence
The PR diff explicitly marks both files with “No newline at end of file”, indicating they do not end
with a trailing newline.

Daqifi.Desktop/MainWindow.xaml[1267-1269]
Daqifi.Desktop/ViewModels/SettingsViewModel.cs[31-34]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Two files are missing the trailing newline at EOF.

## Issue Context
Git marks these with `\ No newline at end of file`.

## Fix Focus Areas
- Ensure the files end with a newline (configure editor/formatter if needed).

### Files/lines to change
- Daqifi.Desktop/MainWindow.xaml[1267-1269]
- Daqifi.Desktop/ViewModels/SettingsViewModel.cs[31-34]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

ⓘ The new review experience is currently in Beta. Learn more

Grey Divider

Qodo Logo

Comment thread Daqifi.Desktop/ViewModels/SettingsViewModel.cs
Comment thread Daqifi.Desktop/ViewModels/DaqifiViewModel.cs Outdated
Comment thread Daqifi.Desktop/MainWindow.xaml Outdated
- Lazy-construct AppSettings in DaqifiViewModel to avoid DaqifiSettings
  disk IO during startup and unit tests
- Add XML doc on AppSettings property
- Convert inline-brace setters in SettingsViewModel to Allman style
- Shorten long ToolTip line in MainWindow.xaml under 120 chars
- Add trailing newline to MainWindow.xaml

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@tylerkron
Copy link
Copy Markdown
Contributor Author

Addressed Qodo summary-only findings in 1e4c8b2:

  • Bug trying dependabot on a traditional .net app #4 (Eager settings file IO): Converted DaqifiViewModel.AppSettings from an eagerly-initialized field to a lazy getter (_appSettings ??= new SettingsViewModel()). DaqifiSettings.Instance — which does %CommonApplicationData% filesystem IO in its constructor — is no longer touched when DaqifiViewModel is instantiated; it runs only when the settings drawer is first opened. This removes the startup-path disk IO and the same side-effect in any unit test that constructs DaqifiViewModel.
  • Bug Updated Documentation #5 (Missing EOF newline): Added trailing newline to MainWindow.xaml. SettingsViewModel.cs already ended with a newline after the rewrite.

@github-actions
Copy link
Copy Markdown

📊 Code Coverage Report

Summary

Summary
Generated on: 4/18/2026 - 7:55:28 PM
Coverage date: 4/18/2026 - 7:54:55 PM - 4/18/2026 - 7:55:24 PM
Parser: MultiReport (4x Cobertura)
Assemblies: 3
Classes: 119
Files: 150
Line coverage: 16.9% (1461 of 8620)
Covered lines: 1461
Uncovered lines: 7159
Coverable lines: 8620
Total lines: 24115
Branch coverage: 17.2% (501 of 2905)
Covered branches: 501
Total branches: 2905
Method coverage: Feature is only available for sponsors

Coverage

DAQiFi - 16.7%
Name Line Branch
DAQiFi 16.7% 17.2%
Daqifi.Desktop.App 5.4% 0%
Daqifi.Desktop.Channel.AbstractChannel 40.9% 27.7%
Daqifi.Desktop.Channel.AnalogChannel 58.7% 25%
Daqifi.Desktop.Channel.Channel 11.5% 0%
Daqifi.Desktop.Channel.ChannelColorManager 100% 100%
Daqifi.Desktop.Channel.DataSample 91.6%
Daqifi.Desktop.Channel.DigitalChannel 65.2% 25%
Daqifi.Desktop.Commands.CompositeCommand 0% 0%
Daqifi.Desktop.Commands.HostCommands 0%
Daqifi.Desktop.Commands.WeakEventHandlerManager 0% 0%
Daqifi.Desktop.Configuration.FirewallConfiguration 90.6% 66.6%
Daqifi.Desktop.Configuration.WindowsFirewallWrapper 64% 68.4%
Daqifi.Desktop.ConnectionManager 42.4% 39.2%
Daqifi.Desktop.Converters.BoolToActiveStatusConverter 0% 0%
Daqifi.Desktop.Converters.BoolToConnectionStatusConverter 0% 0%
Daqifi.Desktop.Converters.BoolToStatusColorConverter 0% 0%
Daqifi.Desktop.Converters.BrushColorMatchConverter 0% 0%
Daqifi.Desktop.Converters.ConnectionTypeToColorConverter 0% 0%
Daqifi.Desktop.Converters.ConnectionTypeToUsbConverter 0% 0%
Daqifi.Desktop.Converters.InvertedBoolToVisibilityConverter 0% 0%
Daqifi.Desktop.Converters.ListToStringConverter 0% 0%
Daqifi.Desktop.Converters.NotNullToVisibilityConverter 0% 0%
Daqifi.Desktop.Converters.OxyColorToBrushConverter 0% 0%
Daqifi.Desktop.Converters.StringRightConverter 0% 0%
Daqifi.Desktop.Device.AbstractStreamingDevice 42.9% 38.6%
Daqifi.Desktop.Device.DeviceMessage 0%
Daqifi.Desktop.Device.Firmware.BootloaderSessionStreamingDeviceAdapter 0% 0%
Daqifi.Desktop.Device.Firmware.WifiPromptDelayProcessRunner 0% 0%
Daqifi.Desktop.Device.NativeMethods 100%
Daqifi.Desktop.Device.SerialDevice.SerialStreamingDevice 27.6% 30.8%
Daqifi.Desktop.Device.WiFiDevice.DaqifiStreamingDevice 40.9% 39.4%
Daqifi.Desktop.DialogService.DialogService 0% 0%
Daqifi.Desktop.DialogService.ServiceLocator 0% 0%
Daqifi.Desktop.DiskSpace.DiskSpaceCheckResult 100%
Daqifi.Desktop.DiskSpace.DiskSpaceEventArgs 100%
Daqifi.Desktop.DiskSpace.DiskSpaceMonitor 88.2% 86.6%
Daqifi.Desktop.DuplicateDeviceCheckResult 100%
Daqifi.Desktop.Exporter.OptimizedLoggingSessionExporter 66.5% 62.7%
Daqifi.Desktop.Exporter.SampleData 100%
Daqifi.Desktop.Helpers.BooleanConverter`1 0% 0%
Daqifi.Desktop.Helpers.BooleanToInverseBoolConverter 0% 0%
Daqifi.Desktop.Helpers.BooleanToVisibilityConverter 0%
Daqifi.Desktop.Helpers.EnumDescriptionConverter 100% 100%
Daqifi.Desktop.Helpers.IntToVisibilityConverter 0% 0%
Daqifi.Desktop.Helpers.MinMaxDownsampler 98.6% 97.9%
Daqifi.Desktop.Helpers.MyMultiValueConverter 0%
Daqifi.Desktop.Helpers.NaturalSortHelper 100% 100%
Daqifi.Desktop.Helpers.VersionHelper 98.2% 66.2%
Daqifi.Desktop.Logger.DatabaseLogger 0% 0%
Daqifi.Desktop.Logger.DatabaseMigrator 0% 0%
Daqifi.Desktop.Logger.DeviceLegendGroup 100% 100%
Daqifi.Desktop.Logger.LoggedSeriesLegendItem 0% 0%
Daqifi.Desktop.Logger.LoggingContext 100%
Daqifi.Desktop.Logger.LoggingContextDesignTimeFactory 0%
Daqifi.Desktop.Logger.LoggingManager 0% 0%
Daqifi.Desktop.Logger.LoggingSession 16% 5%
Daqifi.Desktop.Logger.PlotLogger 0% 0%
Daqifi.Desktop.Logger.SessionDeviceMetadata 80%
Daqifi.Desktop.Logger.SummaryLogger 0% 0%
Daqifi.Desktop.Logger.TimestampGapDetector 95% 83.3%
Daqifi.Desktop.Loggers.ImportOptions 0%
Daqifi.Desktop.Loggers.ImportProgress 0% 0%
Daqifi.Desktop.Loggers.SdCardSessionImporter 0% 0%
Daqifi.Desktop.MainWindow 0% 0%
Daqifi.Desktop.Migrations.AddSamplesSessionTimeIndex 0%
Daqifi.Desktop.Migrations.AddSessionDeviceMetadata 0%
Daqifi.Desktop.Migrations.AddSessionSampleCount 0%
Daqifi.Desktop.Migrations.InitialSQLiteMigration 0%
Daqifi.Desktop.Migrations.LoggingContextModelSnapshot 0%
Daqifi.Desktop.Models.AddProfileModel 0%
Daqifi.Desktop.Models.DaqifiSettings 80.5% 83.3%
Daqifi.Desktop.Models.DebugDataCollection 6.6% 0%
Daqifi.Desktop.Models.DebugDataModel 0% 0%
Daqifi.Desktop.Models.Notifications 0%
Daqifi.Desktop.Models.SdCardFile 0% 0%
Daqifi.Desktop.Services.WindowsPrincipalAdminChecker 0%
Daqifi.Desktop.Services.WpfMessageBoxService 0%
Daqifi.Desktop.UpdateVersion.VersionNotification 0% 0%
Daqifi.Desktop.View.AddProfileConfirmationDialog 0% 0%
Daqifi.Desktop.View.AddprofileDialog 0% 0%
Daqifi.Desktop.View.ConnectionDialog 0% 0%
Daqifi.Desktop.View.DebugWindow 0% 0%
Daqifi.Desktop.View.DeviceLogsView 0% 0%
Daqifi.Desktop.View.DuplicateDeviceDialog 0% 0%
Daqifi.Desktop.View.ErrorDialog 0% 0%
Daqifi.Desktop.View.ExportDialog 0% 0%
Daqifi.Desktop.View.FirmwareDialog 0% 0%
Daqifi.Desktop.View.Flyouts.FirmwareFlyout 0% 0%
Daqifi.Desktop.View.Flyouts.LiveGraphFlyout 0% 0%
Daqifi.Desktop.View.Flyouts.LoggedSessionFlyout 0% 0%
Daqifi.Desktop.View.Flyouts.NotificationsFlyout 0% 0%
Daqifi.Desktop.View.Flyouts.SummaryFlyout 0% 0%
Daqifi.Desktop.View.Flyouts.UpdateProfileFlyout 0% 0%
Daqifi.Desktop.View.MigrationStatusWindow 0% 0%
Daqifi.Desktop.View.MinimapInteractionController 0% 0%
Daqifi.Desktop.View.Prototype.ChannelsPanePrototype 0% 0%
Daqifi.Desktop.View.Prototype.DevicesPanePrototype 0% 0%
Daqifi.Desktop.View.SuccessDialog 0% 0%
Daqifi.Desktop.ViewModels.AddProfileConfirmationDialogViewModel 0% 0%
Daqifi.Desktop.ViewModels.AddProfileDialogViewModel 0% 0%
Daqifi.Desktop.ViewModels.ChannelsPaneViewModel 0% 0%
Daqifi.Desktop.ViewModels.ChannelTileViewModel 0% 0%
Daqifi.Desktop.ViewModels.ConnectionDialogViewModel 21.7% 19.5%
Daqifi.Desktop.ViewModels.DaqifiViewModel 14.5% 8.1%
Daqifi.Desktop.ViewModels.DeviceLogsViewModel 0% 0%
Daqifi.Desktop.ViewModels.DevicesPaneViewModel 0% 0%
Daqifi.Desktop.ViewModels.DeviceTileViewModel 0% 0%
Daqifi.Desktop.ViewModels.DuplicateDeviceDialogViewModel 0%
Daqifi.Desktop.ViewModels.ErrorDialogViewModel 0%
Daqifi.Desktop.ViewModels.ExportDialogViewModel 0% 0%
Daqifi.Desktop.ViewModels.FirmwareDialogViewModel 0% 0%
Daqifi.Desktop.ViewModels.SettingsViewModel 0% 0%
Daqifi.Desktop.ViewModels.SuccessDialogViewModel 85.7%
Daqifi.Desktop.WindowViewModelMapping.IWindowViewModelMappingsContract 0%
Daqifi.Desktop.WindowViewModelMapping.WindowViewModelMappings 0%
Sentry.Generated.BuildPropertyInitializer 100%
Daqifi.Desktop.Common - 30.8%
Name Line Branch
Daqifi.Desktop.Common 30.8% 16.6%
Daqifi.Desktop.Common.Loggers.AppLogger 33.7% 16.6%
Daqifi.Desktop.Common.Loggers.NoOpLogger 0%
Daqifi.Desktop.IO - 100%
Name Line Branch
Daqifi.Desktop.IO 100% ****
Daqifi.Desktop.IO.Messages.MessageEventArgs`1 100%

Coverage report generated by ReportGeneratorView full report in build artifacts

@tylerkron tylerkron merged commit 0258657 into main Apr 18, 2026
8 checks passed
@tylerkron tylerkron deleted the claude/friendly-fermi-c54466 branch April 18, 2026 19:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant