Skip to content

feat(branding): replace the legacy WiFiDAQ icon with the DAQiFi brand icon - #826

Open
cptkoolbeenz wants to merge 2 commits into
mainfrom
feat/brand-app-icon
Open

feat(branding): replace the legacy WiFiDAQ icon with the DAQiFi brand icon#826
cptkoolbeenz wants to merge 2 commits into
mainfrom
feat/brand-app-icon

Conversation

@cptkoolbeenz

Copy link
Copy Markdown
Member

What

Swaps WiFiDAQ.ico for AppIcon.ico, generated from the brand's own artwork. Three files.

Two problems with the old icon

  1. It isn't the DAQiFi logo. WiFiDAQ.ico is a green/blue "W" waveform mark predating the current brand — unrelated to the wordmark and traces used everywhere else.
  2. It holds a single 96×96 entry. A .ico is a container that can carry several resolutions; with only one, Windows downscales 96→16 for the taskbar.

The replacement

AppIcon.ico carries seven entries, with a different image per size:

sizes image
16, 24, 32, 48, 64 traces mark
128, 256 full DAQiFi lockup

Windows picks the closest entry, so small contexts get a legible mark instead of a wordmark shrunk past readability. The wordmark stops reading below roughly 64px — measured while choosing the design, not assumed.

Provenance

Generated by daqifi-design-tokens/assets/app-icons from logo-primary-light.png, logo-icon-traces.png, and the Illustrator wave export already in that repo. No redraws. The same set now supplies the Avalonia port and the Android app, so all three ship a consistent icon.

Regenerate in the tokens repo rather than editing this file.

Scope

Only the .ico swap and its three csproj references. Unrelated working-tree files in my checkout (.csproj.user, a WPF temp csproj, MPLABXLog.xml) were deliberately left unstaged.

Note if you diff locally: my checkout's main was 5 commits behind, so git diff main...HEAD shows other people's merged work too (including an NCalcSync bump that isn't mine). Against origin/main it's 3 files, 6 insertions.

🤖 Generated with Claude Code

… icon

WiFiDAQ.ico was not the DAQiFi logo — a green/blue "W" waveform mark predating
the current brand — and it carried a single 96x96 entry, so Windows downscaled
it to 16px for the taskbar.

AppIcon.ico is multi-resolution with a DIFFERENT image per size: the traces mark
at 16/24/32/48/64 and the full DAQiFi lockup at 128/256. Windows picks the
closest entry, so the taskbar and Explorer get something legible rather than a
shrunken wordmark.

Generated by daqifi-design-tokens/assets/app-icons from the brand's own artwork
(logo-primary-light, logo-icon-traces, and the Illustrator wave export), so it
matches what the Avalonia port and the Android app now ship. Regenerate there
rather than editing this file.
@cptkoolbeenz
cptkoolbeenz requested a review from a team as a code owner August 19, 2026 06:00
@qodo-code-review

Copy link
Copy Markdown
Contributor

PR Summary by Qodo

Replace legacy desktop icon with multi-resolution DAQiFi branding

✨ Enhancement ⚙️ Configuration changes 🕐 10-20 Minutes

Grey Divider

AI Description

• Replaces legacy WiFiDAQ artwork with the current DAQiFi brand identity.
• Adds seven resolution-specific images for legible Windows shell rendering.
• Updates project metadata and resources to embed the generated icon.
Diagram

graph TD
  A["Design Tokens"] -->|generates| B["AppIcon.ico"] -->|referenced by| C["Desktop Project"] -->|embeds in| D["DAQiFi App"] -->|displayed by| E["Windows Shell"]
Loading
High-Level Assessment

The chosen approach is appropriate: a native multi-resolution ICO lets Windows select purpose-designed artwork for each shell size, while committing the generated artifact supports normal MSBuild packaging. Keeping source artwork and regeneration logic in the design-token repository avoids divergent hand-edited assets; single-resolution icons or runtime-only image selection would not provide equivalent executable and Explorer metadata.

Files changed (2) +6 / -3

Enhancement (1) +0 / -0
AppIcon.icoAdd the multi-resolution DAQiFi brand icon +0/-0

Add the multi-resolution DAQiFi brand icon

• Adds a generated seven-entry Windows icon covering 16, 24, 32, 48, 64, 128, and 256 pixels. Small entries use the traces mark for clarity, while larger entries use the full DAQiFi lockup.

Daqifi.Desktop/Images/AppIcon.ico

Other (1) +6 / -3
Daqifi.Desktop.csprojEmbed the new DAQiFi application icon +6/-3

Embed the new DAQiFi application icon

• Replaces all WiFiDAQ.ico application and resource references with AppIcon.ico. Documents the size-specific artwork strategy and identifies the design-token repository as the regeneration source.

Daqifi.Desktop/Daqifi.Desktop.csproj

@qodo-code-review

Copy link
Copy Markdown
Contributor

Code Review by Qodo

🐞 Bugs (0) 📘 Rule violations (1) 📜 Skill insights (0)

Grey Divider


Remediation recommended

1. Icon entries use tab indentation 📘 Rule violation ✧ Quality
Description
The newly added icon comment and ApplicationIcon entry begin with tabs instead of four-space
indentation. Additional changed resource entries follow the same prohibited tab-based indentation.
Code

Daqifi.Desktop/Daqifi.Desktop.csproj[R17-20]

+		<!-- Multi-resolution brand icon: 16-64px carry the traces mark, 128/256 the
+		     full DAQiFi lockup, since the wordmark is unreadable at taskbar size.
+		     Generated by daqifi-design-tokens/assets/app-icons — do not hand-edit. -->
+		<ApplicationIcon>Images\AppIcon.ico</ApplicationIcon>
Relevance

●●● Strong

Formatting findings are commonly accepted; replacing tabs with spaces is a trivial deterministic
compliance fix.

PR-#485
PR-#566

ⓘ Recommendations generated based on similar findings in past PRs

Evidence
PR Compliance ID 244818 prohibits tabs on added or modified lines. The added icon comment and
ApplicationIcon element at lines 17-20 begin with tab characters, and the repository
.editorconfig does not define an exception for project files.

Rule 244818: Use 4 spaces for indentation (no tabs)
Daqifi.Desktop/Daqifi.Desktop.csproj[17-20]

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

## Issue description
Newly added XML lines use tab characters for indentation, violating the required four-space indentation convention.

## Issue Context
Convert leading tabs on all added icon-related entries to four spaces per indentation level while preserving the XML structure.

## Fix Focus Areas
- Daqifi.Desktop/Daqifi.Desktop.csproj[17-20]
- Daqifi.Desktop/Daqifi.Desktop.csproj[35-35]
- Daqifi.Desktop/Daqifi.Desktop.csproj[79-79]

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


Grey Divider

Context sources
✅ Compliance rules (platform): 49 rules

Grey Divider

Tip of the day
💡 Did you know, you can show, collapse, or hide each part of a finding: code, evidence, and all

More tips ↗ | Customize Qodo ↗ | Qodo docs ↗

Grey Divider

Qodo Logo

Comment on lines +17 to +20
<!-- Multi-resolution brand icon: 16-64px carry the traces mark, 128/256 the
full DAQiFi lockup, since the wordmark is unreadable at taskbar size.
Generated by daqifi-design-tokens/assets/app-icons — do not hand-edit. -->
<ApplicationIcon>Images\AppIcon.ico</ApplicationIcon>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remediation recommended

1. Icon entries use tab indentation 📘 Rule violation ✧ Quality

The newly added icon comment and ApplicationIcon entry begin with tabs instead of four-space
indentation. Additional changed resource entries follow the same prohibited tab-based indentation.
Agent Prompt
## Issue description
Newly added XML lines use tab characters for indentation, violating the required four-space indentation convention.

## Issue Context
Convert leading tabs on all added icon-related entries to four spaces per indentation level while preserving the XML structure.

## Fix Focus Areas
- Daqifi.Desktop/Daqifi.Desktop.csproj[17-20]
- Daqifi.Desktop/Daqifi.Desktop.csproj[35-35]
- Daqifi.Desktop/Daqifi.Desktop.csproj[79-79]

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

Picks up the composition settled on a real launcher: traces + DAQIFI over a low
wave band on white, the same icon the Avalonia port now ships on Android,
desktop and iOS. The two applications look like one product.

Only the 16 and 24px entries still carry the traces mark alone — a wordmark of
any size is an unreadable smudge there.

Generated by daqifi-design-tokens/assets/app-icons (9182a97).
@github-actions

Copy link
Copy Markdown

📊 Code Coverage Report

Summary

Summary
Generated on: 8/20/2026 - 8:23:00 PM
Coverage date: 8/20/2026 - 8:21:17 PM - 8/20/2026 - 8:22:55 PM
Parser: MultiReport (2x Cobertura)
Assemblies: 2
Classes: 141
Files: 165
Line coverage: 57.6% (6057 of 10502)
Covered lines: 6057
Uncovered lines: 4445
Coverable lines: 10502
Total lines: 35075
Branch coverage: 43.5% (1620 of 3716)
Covered branches: 1620
Total branches: 3716
Method coverage: Feature is only available for sponsors

Coverage

DAQiFi - 57.7%
Name Line Branch
DAQiFi 57.7% 43.7%
Daqifi.Desktop.App 2.9% 0%
Daqifi.Desktop.Channel.AbstractChannel 74.7% 57.1%
Daqifi.Desktop.Channel.AnalogChannel 46.8% 25%
Daqifi.Desktop.Channel.ChannelColorManager 100% 100%
Daqifi.Desktop.Channel.DataSample 91.6%
Daqifi.Desktop.Channel.DigitalChannel 86.5% 61.1%
Daqifi.Desktop.Configuration.FirewallConfiguration 90.6% 66.6%
Daqifi.Desktop.Configuration.WindowsFirewallWrapper 63% 64.2%
Daqifi.Desktop.ConnectionManager 86.7% 75.7%
Daqifi.Desktop.Converters.BoolAndToVisibilityConverter 100% 100%
Daqifi.Desktop.Converters.BrushColorMatchConverter 100% 100%
Daqifi.Desktop.Converters.ConnectionTypeToColorConverter 88.8% 83.3%
Daqifi.Desktop.Converters.InvertedBoolToVisibilityConverter 100% 100%
Daqifi.Desktop.Converters.ListToStringConverter 100% 94.4%
Daqifi.Desktop.Converters.NotNullToVisibilityConverter 100% 100%
Daqifi.Desktop.Converters.OxyColorToBrushConverter 100% 100%
Daqifi.Desktop.Device.AbstractStreamingDevice 69% 60.3%
Daqifi.Desktop.Device.ConnectionLostEventArgs 100%
Daqifi.Desktop.Device.DeviceMessage 92.8%
Daqifi.Desktop.Device.Firmware.BootloaderDiscoveredEventArgs 100% 50%
Daqifi.Desktop.Device.Firmware.BootloaderHoldDroppedEventArgs 100% 50%
Daqifi.Desktop.Device.Firmware.BootloaderHoldService 82.7% 83.3%
Daqifi.Desktop.Device.Firmware.BootloaderSessionStreamingDeviceAdapter 10% 8.3%
Daqifi.Desktop.Device.Firmware.BootloaderWatcher 90.7% 72.6%
Daqifi.Desktop.Device.Firmware.FirmwareFailureClassifier 100% 100%
Daqifi.Desktop.Device.Firmware.FirmwareUpdateCoordinator 74.1% 63.4%
Daqifi.Desktop.Device.Firmware.FirmwareUpdateServiceConfig 100%
Daqifi.Desktop.Device.Firmware.HeldBootloader 100% 50%
Daqifi.Desktop.Device.Firmware.HidBootloaderDiscovery 0% 0%
Daqifi.Desktop.Device.NativeMethods 100%
Daqifi.Desktop.Device.SerialDevice.SerialStreamingDevice 56.5% 55.4%
Daqifi.Desktop.Device.WiFiDevice.DaqifiStreamingDevice 59.2% 52.5%
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.DiskSpace.DiskSpaceMonitorCoordinator 100% 100%
Daqifi.Desktop.DiskSpace.DiskSpaceStartDecision 100%
Daqifi.Desktop.DuplicateDeviceCheckResult 100%
Daqifi.Desktop.Exporter.LoggingSessionSampleSource 96.3% 75%
Daqifi.Desktop.Exporter.OptimizedLoggingSessionExporter 68.9% 54.5%
Daqifi.Desktop.Helpers.BooleanConverter`1 100% 100%
Daqifi.Desktop.Helpers.BooleanToInverseBoolConverter 100% 100%
Daqifi.Desktop.Helpers.BooleanToVisibilityConverter 100%
Daqifi.Desktop.Helpers.EnumDescriptionConverter 100% 91.6%
Daqifi.Desktop.Helpers.IntToVisibilityConverter 100% 100%
Daqifi.Desktop.Helpers.MinMaxDownsampler 100% 96.4%
Daqifi.Desktop.Helpers.NaturalSortHelper 100% 100%
Daqifi.Desktop.Helpers.OxyPlotDarkTheme 100%
Daqifi.Desktop.Helpers.ReferenceComparer`1 100%
Daqifi.Desktop.Helpers.TileBrushes 100%
Daqifi.Desktop.Helpers.UiThreadHelper 26.6% 25%
Daqifi.Desktop.Logger.DatabaseLogger 0% 0%
Daqifi.Desktop.Logger.DatabaseMigrator 0% 0%
Daqifi.Desktop.Logger.DeviceLegendGroup 100% 100%
Daqifi.Desktop.Logger.InitialSessionLoad 100%
Daqifi.Desktop.Logger.LoggedSeriesLegendItem 94.1% 44.4%
Daqifi.Desktop.Logger.LoggingContext 100%
Daqifi.Desktop.Logger.LoggingContextDesignTimeFactory 0%
Daqifi.Desktop.Logger.LoggingManager 25.8% 26.7%
Daqifi.Desktop.Logger.LoggingSession 36.5% 13%
Daqifi.Desktop.Logger.MinimapPlotComponents 100%
Daqifi.Desktop.Logger.PlotLogger 68.8% 63.6%
Daqifi.Desktop.Logger.PlotModelFactory 99.4% 62.5%
Daqifi.Desktop.Logger.SessionChannelInfo 100%
Daqifi.Desktop.Logger.SessionDataRepository 97.9% 89.5%
Daqifi.Desktop.Logger.SessionDeviceMetadata 80%
Daqifi.Desktop.Logger.SessionSampleWriter 96% 91.3%
Daqifi.Desktop.Logger.SummaryLogger 88.2% 71.7%
Daqifi.Desktop.Logger.TimestampGapDetector 94.7% 83.3%
Daqifi.Desktop.Loggers.AppLoggerLoggerProvider 59.5% 56.6%
Daqifi.Desktop.Loggers.ImportOptions 100%
Daqifi.Desktop.Loggers.ImportProgress 0% 0%
Daqifi.Desktop.Loggers.ImportTimestampQuality 100% 100%
Daqifi.Desktop.Loggers.SdCardImportResult 100%
Daqifi.Desktop.Loggers.SdCardSessionImporter 79.4% 70%
Daqifi.Desktop.MainWindow 0% 0%
Daqifi.Desktop.Migrations.AddSamplesSessionTimeIndex 97.8%
Daqifi.Desktop.Migrations.AddSessionDeviceMetadata 98.6%
Daqifi.Desktop.Migrations.AddSessionSampleCount 98.1%
Daqifi.Desktop.Migrations.DropChannelTable 65.5%
Daqifi.Desktop.Migrations.InitialSQLiteMigration 97.4%
Daqifi.Desktop.Migrations.LoggingContextModelSnapshot 0%
Daqifi.Desktop.Models.DaqifiSettings 83.7% 100%
Daqifi.Desktop.Models.DebugDataHistory 6.6% 0%
Daqifi.Desktop.Models.DebugDataModel 0% 0%
Daqifi.Desktop.Models.FirmwareOption 61.5% 37.5%
Daqifi.Desktop.Models.Notifications 80%
Daqifi.Desktop.Models.Profile 100%
Daqifi.Desktop.Models.ProfileChannel 100%
Daqifi.Desktop.Models.ProfileDevice 100%
Daqifi.Desktop.Models.SdCardFile 42.8% 0%
Daqifi.Desktop.Models.SdCardLogFormatInfo 94.7% 87.5%
Daqifi.Desktop.Services.NoOpMessageBoxService 0%
Daqifi.Desktop.Services.WindowsPrincipalAdminChecker 0%
Daqifi.Desktop.Services.WpfMessageBoxService 0%
Daqifi.Desktop.UpdateVersion.VersionNotification 84% 54.1%
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.LiveGraphFlyout 0% 0%
Daqifi.Desktop.View.Flyouts.NotificationsFlyout 0% 0%
Daqifi.Desktop.View.Flyouts.SummaryFlyout 0% 0%
Daqifi.Desktop.View.MigrationStatusWindow 0% 0%
Daqifi.Desktop.View.MinimapInteractionController 0% 0%
Daqifi.Desktop.View.ProfilesPane 0% 0%
Daqifi.Desktop.View.Prototype.ChannelsPanePrototype 0% 0%
Daqifi.Desktop.View.Prototype.DevicesPanePrototype 0% 0%
Daqifi.Desktop.View.Prototype.LiveGraphPane 0% 0%
Daqifi.Desktop.View.Prototype.LoggedDataPanePrototype 0% 0%
Daqifi.Desktop.View.SuccessDialog 0% 0%
Daqifi.Desktop.ViewModels.ChannelsPaneViewModel 57.8% 34.8%
Daqifi.Desktop.ViewModels.ChannelTileViewModel 72.6% 66.1%
Daqifi.Desktop.ViewModels.ConfirmOverlayViewModel 100% 100%
Daqifi.Desktop.ViewModels.ConnectionDialogViewModel 66.1% 55.7%
Daqifi.Desktop.ViewModels.DaqifiViewModel 19.4% 14.3%
Daqifi.Desktop.ViewModels.DeviceLogsViewModel 80.4% 60.8%
Daqifi.Desktop.ViewModels.DevicesPaneViewModel 0% 0%
Daqifi.Desktop.ViewModels.DeviceTileViewModel 35.7% 15.2%
Daqifi.Desktop.ViewModels.DuplicateDeviceDialogViewModel 0%
Daqifi.Desktop.ViewModels.ErrorDialogViewModel 0%
Daqifi.Desktop.ViewModels.ExportDialogViewModel 65.5% 50%
Daqifi.Desktop.ViewModels.FirmwareDialogViewModel 55.1% 46.8%
Daqifi.Desktop.ViewModels.ImportAllOutcome 100% 100%
Daqifi.Desktop.ViewModels.LoggingSessionListViewModel 95.6% 88.8%
Daqifi.Desktop.ViewModels.NewProfileChannelItem 0%
Daqifi.Desktop.ViewModels.NewProfileDeviceItem 0% 0%
Daqifi.Desktop.ViewModels.ProfilesPaneViewModel 0% 0%
Daqifi.Desktop.ViewModels.SdCardFailure 100%
Daqifi.Desktop.ViewModels.SdCardFailureClassifier 100% 91.6%
Daqifi.Desktop.ViewModels.SettingsViewModel 0% 0%
Daqifi.Desktop.ViewModels.SuccessDialogViewModel 0%
Sentry.Generated.BuildPropertyInitializer 100%
Daqifi.Desktop.Common - 46.9%
Name Line Branch
Daqifi.Desktop.Common 46.9% 33.3%
Daqifi.Desktop.Common.AppDataPaths 84.2% 50%
Daqifi.Desktop.Common.Loggers.AppLogErrorException 0%
Daqifi.Desktop.Common.Loggers.AppLogger 42% 31.5%

Coverage report generated by ReportGeneratorView full report in build artifacts

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