Skip to content

.NET 8.0 upgrade, UI theming, and improved Git integration - #38

Merged
Hefaistos68 merged 25 commits into
masterfrom
dark-mode
Dec 22, 2025
Merged

.NET 8.0 upgrade, UI theming, and improved Git integration#38
Hefaistos68 merged 25 commits into
masterfrom
dark-mode

Conversation

@Hefaistos68

Copy link
Copy Markdown
Owner

PR Classification

Comprehensive modernization and feature enhancement, including .NET 8.0 upgrade, UI theming, and improved Git integration.

PR Summary

This pull request upgrades all projects to .NET 8.0, introduces a dark mode theme system, and significantly enhances Git integration with credential-aware operations. It also removes deprecated code and improves maintainability.

  • MainDialog.cs / MainDialog.Utilities.cs: Refactored for .NET 8.0, added dark mode support, implemented theme application, and overhauled Git context menu with credential-aware branch, fetch, and pull operations.
  • ThemeHelper.cs: Introduced a centralized theme system supporting light and dark palettes, applied across forms and controls.
  • ObjectListView.cs / VirtualObjectListView.cs: Migrated state serialization to System.Text.Json and removed obsolete reflection code for .NET 8 compatibility.
  • dlgSettings.Designer.cs / dlgSettings.cs / Settings.cs: Added and persisted a "Dark Mode" user setting, updating the UI accordingly.
  • Removed GoogleDriveStorage.cs: Eliminated experimental Google Drive sync feature for codebase cleanup.

Hefaistos68 and others added 24 commits January 29, 2025 20:03
Added new methods for branch menu interactions and Git checkout functionality.
Improved code organization.
Added new Git menu items and separators in MainDialog.
Updated SetupBranchMenu to use the new gitToolStripMenuItem.
Introduced event handlers for fetch and pull functionality.
Updated resource files to reflect UI changes and maintain consistency.
Added a check in `GitTimer_Tick` to prevent execution
when the main window is not focused, improving user experience.
Updated `TaskScheduler` package from version `2.10.1` to
`2.12.1` for potential bug fixes and enhancements.
Modified the `UpdateList` method in `MainDialog.Utilities.cs` to accept a boolean parameter `updateGitStatus`, enabling conditional fetching of Git status. Updated multiple calls to `UpdateList()` in `MainDialog.cs` to pass the appropriate boolean value, improving control over Git status updates during solution loading and item merging.
Introduced `FetchGitStatusAsync` to retrieve git status without blocking the UI. Replaced synchronous calls to `FetchGitStatus` with the new async method, enhancing application responsiveness. Refactored the original method into `FetchGitStatusBackground` for background processing and UI thread updates.
Modified the `GitTimer_Tick` method to check if the application is the foreground window instead of checking for focus on specific controls.
Changed the target framework in VSLXshared.csproj from net6.0-windows to net8.0, upgrading the project to use .NET 8.0. No other project settings were modified.
Upgraded dependencies in VSLXshared.csproj: Newtonsoft.Json to 13.0.4, System.Drawing.Common to 8.0.21, and System.Management to 8.0.0. This ensures the project uses the latest compatible versions of these packages.
…olve the MessageBox, MessageBoxButtons, and MessageBoxIcon types.' in file 'VSLXshared\DataModel\VisualStudioInstance.cs'
Updated the target framework for BackgroundLaunch.csproj from net6.0-windows10.0.17763.0 to net8.0-windows10.0.17763.0, and for ObjectListView2022.csproj from net6.0-windows7.0 to net8.0, modernizing both projects to use .NET 8.0. No other changes were made.
…ows.Forms.MethodInvoker' to resolve CS0104 ambiguity between 'System.Windows.Forms.MethodInvoker' and 'System.Reflection.MethodInvoker'.' in file 'ObjectListView\VirtualObjectListView.cs'
…oker' for consistency and clarity, resolving ambiguity.

Line 579: Disambiguated 'MethodInvoker' by specifying 'System.Windows.Forms.MethodInvoker' to resolve CS0104 ambiguity.
Line 701: Disambiguated 'MethodInvoker' by specifying 'System.Windows.Forms.MethodInvoker' to resolve CS0104 ambiguity.
Line 79: Removed 'using System.Reflection;' to resolve ambiguity between 'System.Windows.Forms.MethodInvoker' and 'System.Reflection.MethodInvoker'. The file only uses reflection types with fully qualified names, so this using is not necessary.' in file 'ObjectListView\VirtualObjectListView.cs'
Replaced BinaryFormatter with System.Text.Json for serializing and deserializing ObjectListView state, improving security and modernizing the codebase. Updated using directives accordingly. Also changed the project target framework from net8.0 to net8.0-windows in ObjectListView2022.csproj, and added a missing System.Reflection using directive in VirtualObjectListView.cs.
Changed the target framework in BackgroundLaunch.csproj from 'net8.0-windows10.0.17763.0' to 'net8.0', removing the explicit Windows version requirement. This may improve compatibility across different Windows versions.
Changed the target framework in BackgroundLaunch.csproj from net8.0 to net8.0-windows7.0 to specify compatibility with Windows 7. No other project settings were modified.
- Introduced a Git credentials provider using environment variable VSLX_GIT_PAT or Windows integrated authentication for LibGit2Sharp operations.
- Enhanced branch checkout, fetch, and pull actions to support credential-aware remote operations, improving error handling for authentication issues.
- Updated .NET target framework to net8.0 and upgraded several NuGet package dependencies, including LibGit2Sharp, Newtonsoft.Json, System.Management, TaskScheduler, and WindowsAPICodePack.
- Removed GoogleDriveStorage.cs and its related Google.Apis.Drive.v3 package, eliminating experimental Google Drive settings sync.
- Improved VisualStudioCombobox and dlgExecuteVisualStudio.cs to handle selected index logic more robustly.
- Simplified VirtualObjectListView.cs by replacing reflection-based virtual list size setting with direct base property assignment.
The System.Management NuGet package version was changed from 9.0.10 to 8.0.0 in the VSLauncherX.csproj file. All other package references remain unchanged.
Changed the target framework in VSLauncherX.csproj from net8.0 to net8.0-windows7.0 to specify compatibility with Windows 7. No other project settings were modified.
Introduce a feature in `MainDialog.Utilities.cs` to load and cache Personal Access Tokens (PATs) from a configuration file, ensuring thread-safe access and prioritizing credential resolution. Add a sample configuration file `git-credentials.sample.json` to demonstrate the JSON structure for PATs.

Update `dotnet-upgrade-report.md` to document the upgrade of projects to .NET 8.0, including framework changes, NuGet package updates, and a summary of related commits. Highlight project-specific upgrades, such as credential-aware Git operations and state serialization migration. Suggest next steps for further improvements.
@Hefaistos68
Hefaistos68 merged commit 42e21b7 into master Dec 22, 2025
2 checks passed
Introduces a user-selectable dark mode, including a new ThemeHelper for applying light and dark palettes across the UI. Adds a DarkMode setting and checkbox in the settings dialog, with persistence. Updates main form, custom combobox, and dropdowns to use themed colors. Refactors UI code for consistent appearance in both light and dark modes.
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.

2 participants