Repository navigation
Conversation
…ted dark mode option
… for better organization
|
@0xced @danielmarbach @Calinou @sjp @ErikMogensen Could this be taken up to consideration? |
|
And unlike #899 this implementation doesn't cause any freeze upon changing between light / dark mode.
|
Sorry not a maintainer |
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Configuration compatibility and theme startup, transition, and threading issues remain unresolved.
Review effort: Balanced
Findings: 2
Open (5)
Removing configuration sections breaks existing consumers · New Preference refresh updates handleless controls off the UI thread · New Disabled enum choices appear enabled in themed lists · New High-contrast transitions destroy original syntax colors · New Fresh launches incorrectly default to light mode · New
What changed in this PR
Adds shared dark-mode support across the WinForms application for #299, including persisted preferences and themed dynamic views.
Changes:
- Introduces shared palettes, rendering, color restoration, and themed forms.
- Integrates theme settings with startup, Options, and hosted controls.
- Adds theme regression tests and build-time upstream-release metadata support.
| File | Description |
|---|---|
| src/ServiceBusExplorer/UIHelpers/Theming/ThemeSnapshot.cs | Captures and restores original appearance. |
| src/ServiceBusExplorer/UIHelpers/Theming/ThemePalette.cs | Defines dark and high-contrast palettes. |
| src/ServiceBusExplorer/UIHelpers/Theming/ThemeNativeMethods.cs | Themes native captions, borders, and tabs. |
| src/ServiceBusExplorer/UIHelpers/Theming/ThemeManager.SpecialControls.cs | Themes editors, charts, and custom controls. |
| src/ServiceBusExplorer/UIHelpers/Theming/ThemeManager.Hosting.cs | Centralizes themed content replacement. |
| src/ServiceBusExplorer/UIHelpers/Theming/ThemeManager.Drawing.cs | Adds themed drawing handlers. |
| src/ServiceBusExplorer/UIHelpers/Theming/ThemeManager.cs | Coordinates registration and theme updates. |
| src/ServiceBusExplorer/UIHelpers/Theming/ThemeManager.Controls.cs | Applies and restores control styling. |
| src/ServiceBusExplorer/UIHelpers/Theming/IThemeAware.cs | Defines custom theme integration. |
| src/ServiceBusExplorer/UIHelpers/Theming/DarkToolStripRenderer.cs | Adds themed menu rendering. |
| src/ServiceBusExplorer/UIHelpers/StandardValueEditor.cs | Registers dropdown editors for theming. |
| src/ServiceBusExplorer/UIHelpers/LanguageDetector.cs | Refreshes themed syntax styles. |
| src/ServiceBusExplorer/UIHelpers/DataGridViewDeleteButtonCell.cs | Themes delete-button cells. |
| src/ServiceBusExplorer/Program.cs | Initializes theme infrastructure. |
| src/ServiceBusExplorer/Forms/UploadCertificateForm.cs | Adopts the themed base form. |
| src/ServiceBusExplorer/Forms/ThemedForm.cs | Registers forms for theming on load. |
| src/ServiceBusExplorer/Forms/TextForm.cs | Adopts the themed base form. |
| src/ServiceBusExplorer/Forms/SelectEntityForm.cs | Adopts the themed base form. |
| src/ServiceBusExplorer/Forms/RegistrationsForm.cs | Adopts the themed base form. |
| src/ServiceBusExplorer/Forms/RegistrationForm.cs | Adopts the themed base form. |
| src/ServiceBusExplorer/Forms/ReceiveModeForm.cs | Adopts the themed base form. |
| src/ServiceBusExplorer/Forms/ReceiveEventForm.cs | Adopts the themed base form. |
| src/ServiceBusExplorer/Forms/PublishEventForm.cs | Adopts the themed base form. |
| src/ServiceBusExplorer/Forms/ParameterForm.cs | Adopts the themed base form. |
| src/ServiceBusExplorer/Forms/OptionForm.cs | Loads, saves, and applies theme preferences. |
| src/ServiceBusExplorer/Forms/NewVersionAvailableForm.cs | Adopts the themed base form. |
| src/ServiceBusExplorer/Forms/MessageForm.cs | Adopts the themed base form. |
| src/ServiceBusExplorer/Forms/MainForm.cs | Integrates settings and themed view hosting. |
| src/ServiceBusExplorer/Forms/FilterForm.cs | Adopts the themed base form. |
| src/ServiceBusExplorer/Forms/EventGridConnectForm.cs | Adopts the themed base form. |
| src/ServiceBusExplorer/Forms/EventDataForm.cs | Adopts the themed base form. |
| src/ServiceBusExplorer/Forms/DeleteForm.cs | Adopts the themed base form. |
| src/ServiceBusExplorer/Forms/DateTimeRangeForm.cs | Adopts the themed base form. |
| src/ServiceBusExplorer/Forms/DateTimeForm.cs | Adopts the themed base form. |
| src/ServiceBusExplorer/Forms/CreateEventGridTopicForm.cs | Adopts the themed base form. |
| src/ServiceBusExplorer/Forms/CreateEventGridSubscriptionForm.cs | Adopts the themed base form. |
| src/ServiceBusExplorer/Forms/ContainerForm.cs | Uses shared themed view hosting. |
| src/ServiceBusExplorer/Forms/ConnectForm.cs | Adopts the themed base form. |
| src/ServiceBusExplorer/Forms/CollectionEditorForm.cs | Adopts the themed base form. |
| src/ServiceBusExplorer/Forms/ClipboardForm.cs | Adopts the themed base form. |
| src/ServiceBusExplorer/Forms/ChangeStatusForm.cs | Adopts the themed base form. |
| src/ServiceBusExplorer/Forms/ChangeQueueStatusForm.cs | Adopts the themed base form. |
| src/ServiceBusExplorer/Forms/AboutForm.cs | Adopts the themed base form. |
| src/ServiceBusExplorer/Controls/TestTopicControl.cs | Rethemes rebuilt charts. |
| src/ServiceBusExplorer/Controls/TestQueueControl.cs | Rethemes rebuilt charts. |
| src/ServiceBusExplorer/Controls/TestEventHubControl.cs | Rethemes rebuilt charts. |
| src/ServiceBusExplorer/Controls/Popup.cs | Registers popup content for theming. |
| src/ServiceBusExplorer/Controls/HandleSubscriptionControl.cs | Themes row-header text. |
| src/ServiceBusExplorer/Controls/HandleQueueControl.cs | Themes row-header text. |
| src/ServiceBusExplorer/Controls/DashboardControl.cs | Preserves theme-aware alerts and labels. |
| src/ServiceBusExplorer/App.config | Adds dark defaults and prefixed configuration entries. |
| src/ServiceBusExplorer.Tests/ServiceBusExplorer.Tests.csproj | Adds theme and release-test references. |
| src/ServiceBusExplorer.Tests/Helpers/VersionProviderTests.cs | Tests upstream metadata parsing. |
| src/ServiceBusExplorer.Tests/Helpers/UpstreamReleaseVersionTests.cs | Tests upstream tag selection. |
| src/ServiceBusExplorer.Tests/Helpers/MainSettingsDarkModeTests.cs | Tests theme defaults and persistence. |
| src/ServiceBusExplorer.Tests/Forms/OptionFormDarkModeTests.cs | Tests theme options and layout. |
| src/ServiceBusExplorer.Tests/Forms/DarkModeThemeTests.cs | Tests rendering, restoration, and hosting. |
| src/ServiceBusExplorer.Tests/Forms/DarkModeReviewRegressionTests.cs | Adds targeted theme regressions. |
| src/Common/Helpers/VersionProvider.cs | Adds upstream metadata accessors. |
| src/Common/Helpers/TwoFilesConfiguration.cs | Adds prefixed settings lookup. |
| src/Common/Helpers/MainSettings.cs | Adds dark-mode settings support. |
| src/Common/Helpers/ConfigurationParameters.cs | Defines the dark-mode configuration key. |
| src/Common/Helpers/ConfigurationHelper.cs | Loads the dark-mode preference. |
| src/Common/Common.csproj | Embeds upstream-release metadata. |
| README.md | Documents themes and upstream metadata. |
| GetUpstreamReleaseVersion.ps1 | Resolves reachable stable upstream tags. |
| docs/superpowers/specs/2026-10-03-dark-startup-and-view-host-design.md | Describes startup and hosting requirements. |
| docs/superpowers/plans/2026-10-03-dark-startup-and-view-hosting.md | Records implementation and verification details. |
Files not reviewed (2)
- src/ServiceBusExplorer/Forms/MainForm.Designer.cs: Generated file
- src/ServiceBusExplorer/Forms/OptionForm.Designer.cs: Generated file
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
|
@ErikMogensen Comments by copilot has been resolved ✅ |
Figured out the version dialog still wasn't dark modified, so I added that as well in this commit. 7aa891b Oh also enabled the link in debug for well.. debugging and testings sake :) |
|
@larrycaw Would you consider supporting a setting like this? |
…date related configurations
… dark mode references
|
…ckground based on theme
|
Here is the output from Claude. I haven't looked through it, so I don't know if I agree with it. I am quitting for the day and won't be able to continue for 48 hours so I wanted to send it to you anyway: The code review of PR #902 ("Add dark mode support across the application") is complete. 10 findings reported, ranked by severity:
Also flagged (not a PR defect, but a heads-up): the locally checked-out main (commit 56c5bba) already has its own independently-built dark-mode implementation that diverged from the same ancestor as PR #902 — merging #902 as-is will conflict across MainForm.cs, OptionForm.cs, DataGridViewDeleteButtonCell.cs, etc. with two separate dark-mode features. result: Code review of PR #902 (dark mode) complete — 10 findings reported, led by two conflicting theming implementations for the main panel background and a DEBUG-build regression that re-enables a link label disabled in PR #888; also flagged that local main already has a separately-built, diverged dark-mode feature that will conflict with #902 on merge. |
… background handling
Thanks for sending this over, Erik. I’ve worked through the report and implemented fixes for items 1–6 and 8–10. |
There was a problem hiding this comment.
🟡 Changes recommended
Invalid theme settings can prevent startup, and a new regression test throws before reaching its assertions.
5 open findings
5 resolved since last review
Files not reviewed (2)
- src/ServiceBusExplorer/Forms/MainForm.Designer.cs: Generated file
- src/ServiceBusExplorer/Forms/OptionForm.Designer.cs: Generated file
🧠 Review effort: Balanced
Give feedback about Copilot approvals in this survey to enter a drawing for a $150 gift card.
…nd update version tagging process











Summary
Key changes
UIHelpers/ThemingWhy
This branch primarily delivers end-to-end dark mode support across the WinForms application
Closes #299