-
Notifications
You must be signed in to change notification settings - Fork 2
Upgrade to .Net 10 #118
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Upgrade to .Net 10 #118
Conversation
- Updated package versions for `OpenTelemetry` and `Syncfusion`. - Changed nullable properties to non-nullable in ViewModels. - Refactored `AsyncRelayCommand` and `RelayCommand` for thread safety. - Enhanced error handling for command execution, focusing on cancellation and timeouts. - Improved logic in `ReflectionExtensions` for identifying ViewModel types. - Added comments and documentation for better code clarity. - Removed unnecessary nullable annotations from initialized properties.
Extracted Common Navigation Logic: - Created HandleCurrentViewModelAsync method to handle the common logic for checking if navigation away from current ViewModel is allowed - Created InitializeViewAndViewModel method for common initialization logic Blade Management Refactoring: - Created SetupBladeAsync method to handle common blade setup logic - Created AddBladeToOwner method to handle adding a blade to the owner Simplified ViewModel Checks: - Removed duplicate code for checking running commands - Combined the CanNavigateAwayFromAsync and HasRunningCommands methods Improved Boolean Expressions: - Simplified CanGoBack property to use implicit boolean conversion Removed Redundant Method: - Removed the unused CancelRunningCommands method as it's handled by the ViewModel's CancelAllCommands method
Updated the package `Azure.Monitor.OpenTelemetry.Exporter` from version `1.4.0-beta.3` to `1.4.0`, marking the transition from a beta release to a stable version.
- Updated package references and project files for consistency. - Refactored `SignInControl.xaml` and `SignUpControl.xaml` for better readability. - Introduced `NotificationTypes` for dialog services and updated related interfaces. - Enhanced error handling in `App.xaml.cs`, `DialogService.cs`, and `Application.cs`. - Removed `ExceptionHandlerService.cs` and documented changes in `readme.md`. - Updated resource files to align with new schema and added new string resources. - Modified tests to reflect changes in dialog service method signatures.
This commit introduces null checks for `exception` and `innerException` to prevent potential `NullReferenceException` errors. Additionally, the filtering logic in `GetEnvironmentStackTraceLines` has been removed, allowing the method to return all stack trace lines without filtering, which may include non-user code.
- Updated `Azure.Identity` to version `1.14.0`. - Removed `Microsoft.Extensions.Http.Resilience` and `Microsoft.Extensions.ObjectPool`; added new packages including `Microsoft.AspNetCore.Mvc.Testing` and `Microsoft.AspNetCore.SignalR.Client` at version `9.0.5` or higher. - Updated `Microsoft.Graph` to `5.78.0` and `Microsoft.Identity.Client` to `4.72.0`. - Updated `NuGet.Commands` to `6.14.0` and `Sentry` packages to `5.7.0`. - Updated `System.Diagnostics.DiagnosticSource` to `9.0.5` and added `System.Drawing.Common` and `System.Formats.Asn1` at `9.0.5`. - Updated EF Core packages for `net8.0` and `net9.0` to `8.0.16` and `9.0.5`, respectively. - Updated SDK version in `global.json` to `9.0.300`. - Refactored `SetSelectedItem` method in multiple ViewModel classes to include an optional `isUpdate` parameter and updated using directives. - Added reference to `System.Formats.Asn1` in `NugetUnlister.csproj`.
This commit upgrades several Syncfusion packages in the `Directory.Packages.props` file from version 29.1.41 to 29.2.4. The updated packages include: - Syncfusion.Chart.WinUI - Syncfusion.DocIO.Net.Core - Syncfusion.DocIORenderer.Net.Core - Syncfusion.Editors.WinUI - Syncfusion.Gauge.WinUI - Syncfusion.Licensing - Syncfusion.Pdf.Net.Core - Syncfusion.SfInput.WPF - Syncfusion.SfNavigationDrawer.WPF - Syncfusion.XlsIO.Net.Core This change ensures that the project uses the latest available versions of these packages.
- Updated `OpenIddict.Abstractions` version to `6.3.0`. - Removed `automaticValidation` parameter from multiple ViewModel constructors. - Added `set` accessor for `RefreshOnInitialization` in `ViewModelBladeView` and `ViewModelSummary`. - Updated base class calls in ViewModel constructors to reflect the removal of `automaticValidation`. - Set default value of `true` for `RefreshOnInitialization` in `PivotViewModel`. - Modified test classes to align with constructor changes, removing `automaticValidation` from test instances. - Adjusted tests to set `AutomaticValidationTrigger` after instantiation.
Removed `RefreshOnInitialization` and added `DisableRefreshOnInitialization` in `ViewModelBladeView` and `ViewModelSummary` classes. Updated constructors in `PivotViewModel`, `ViewModelBladeView`, and `ViewModelSummary` to reflect this change. Modified `NavigationExtensions` to use `GetRequiredService` directly from `scopedContextService`.
- Added logging to track initialization in `TestItemsListViewModel`. - Cleared `Items` collection before adding new items in `RetrieveItemsAsync`. - Introduced `AddItemsSafely` method in `CollectionExtensions` for safe item addition to `ObservableCollection`. - Improved view loading logic in `NavigationService` with a timeout to prevent deadlocks. - Enhanced navigation to reuse existing view models, improving performance. - Added `EnsureViewLoadedAsync` to ensure views are fully loaded before navigation. - Cleaned up commented code and improved readability in navigation logic.
Removed null assignments in Dispose methods across multiple ViewModel classes to streamline resource cleanup. Simplified navigation in the NavigationService by eliminating the EnsureViewLoadedAsync method, allowing for immediate navigation without waiting for views to load. Reformatted generic constraints in NavigateAsync for consistency.
Replaced `FindChild<T>()` with `FindDescendant<T>()` in multiple classes, enhancing the search for descendant elements in the visual tree. This change affects `AutoFocusBehavior`, `AutoSelectBehavior`, `NotificationDisplayPart`, `MaskValidator`, `RegexValidator`, and various methods in `DependencyObjectExtensions`. Additionally, streamlined the navigation logic in `NavigationService` by removing redundant code and introducing a new method for creating pages from view models, improving overall functionality and maintainability of the codebase.
The timeout for closing the active dialog has been decreased from 3000 milliseconds to 500 milliseconds. This change improves responsiveness by allowing quicker dialog closure.
- Updated `Microsoft.AspNetCore.WebUtilities` to version `9.0.5`. - Updated `Microsoft.Maui.Controls` and `Microsoft.Maui.Controls.Compatibility` to version `9.0.70`. - Removed `WinUI`, `WPF`, and `Shared` project entries from the solution. - Updated GUIDs in the solution file to reflect project removals. - Removed `ITelemetryInitializer` interface and its documentation, indicating the discontinuation of WinUI telemetry support.
This commit adds a line to set the `IsInitialized` property of the `viewModel` to `false` before invoking the `NavigateAsync` method during back navigation. This ensures that the view model is properly reset or re-initialized when navigating back in the stack.
- Changed `_backStack` type to `Stack<IViewModel>` for type safety. - Enhanced `GoBackAsync` to track backstack state and raise events. - Implemented backstack size management with disposal of oldest ViewModels. - Updated `Dispose` method to ensure proper disposal of `IViewModel` instances. - Modified `IsBackEnabled` property in `BaseShellViewModel` for better encapsulation. - Initialized `IsBackEnabled` in the constructor based on `NavigationService` state. - Added `GoBackCommand` for asynchronous navigation. - Refactored backstack change event handler for improved clarity.
- Introduced static readonly fields for `InvariantCulture` and `DefaultStyles` in `CustomDateTimeJsonConverter`, `DateTimeConverter`, and `DateTimeOffsetConverter` for consistent date parsing and formatting. - Refactored `Write` methods in `CustomDateTimeJsonConverter` and `DateTimeConverter` to include null checks for the `writer` parameter. - Updated `Read` method in `DateTimeOffsetConverter` to prioritize specific format parsing before falling back to lenient ISO 8601 parsing. - Added comprehensive unit tests in `DateTimeOffsetConverterTests` to cover various date/time scenarios, including edge cases. - Introduced a `TestClass` in the tests to validate serialization and deserialization of complex objects with `DateTimeOffset` properties.
Removed the CanNavigateAwayFromAsync method and its logic, simplifying navigation by directly canceling commands on the ViewModel. Replaced HandleCurrentViewModelAsync with a synchronous version, enhancing efficiency and reducing complexity in ViewModel transitions.
- Updated package versions in `Directory.Packages.props` for several dependencies, including `Microsoft.Extensions.ServiceDiscovery`, `Microsoft.NET.Test.Sdk`, `Microsoft.WindowsAppSDK`, and `MSTest.TestAdapter`/`MSTest.TestFramework`. - Restored and refactored the entire `StringExtensions` class in `StringExtensions.cs`, adding methods for string manipulation and validation. - Added new test cases in `StringExtensionsTests.cs` to cover additional scenarios for the `IncreaseString2Long` method, ensuring proper handling of leading zeros and alphanumeric strings.
- Updated the version of the `Microsoft.Graph` package from `5.78.0` to `5.79.0` in `Directory.Packages.props`. - Refactored the `ExecuteWithObject` method in the `WeakAction<T>` class to enhance type handling and conversion for value types. - Cleaned up `MessengerRegisterUnregisterTest.cs` by removing commented-out code and unnecessary using directives, while preserving the original test methods for improved readability and maintainability.
- Upgraded versions of several NuGet packages, including `Microsoft.Identity.Client`, `Sentry`, and `Syncfusion`, for improved compatibility and features. - Removed the `AzureBlobOptions` class and simplified Azure storage integration in `Program.cs` by replacing it with `AddAzureStorageIntegration()`. - Modified the `Startup` class to use a hardcoded connection string and updated method signatures to include the connection string as a parameter. - Refactored `ServiceCollectionExtensions.cs` to directly add `AzureStorageService` without generics. - Introduced a new `AzureStorageService` class that implements `IStorageService` and retrieves connection strings from `IConfiguration`. - Updated the `IStorageService` interface and corresponding tests to align with the new implementation.
This commit introduces a new solution structure in the `I-Synergy.Framework.slnx` file, adding configurations for multiple platforms (Any CPU, arm64, x64, x86). It organizes various folders containing projects and files related to performance, samples, services, tools, and tests, enhancing the overall modularity and clarity of the solution.
- Bumped `BenchmarkDotNet` version to `0.15.0`. - Refactored using directives in `AsyncRelayCommand.cs`. - Introduced `hasStarted` flag to track execution state. - Enhanced exception handling with `GetRequiredService` method. - Updated `finally` block to clear `ExecutionTask` conditionally. - Improved logger type specificity in `DialogService` and `ExceptionHandlerService`. - Refactored duplicate exception check logic for clarity.
Changed property setters from private to public for ReceivedContentDateTime1, ReceivedContentDateTime2, ReceivedContentException, ReceivedContentInt, ReceivedContentStringA1, ReceivedContentStringA2, and ReceivedContentStringB to improve accessibility.
- Upgraded package versions in `Directory.Packages.props`, including `MSTest` and `Sentry`. - Restored solution structure in `I-Synergy.Framework.slnx`. - Introduced new `ISynergy.Framework.CQRS` project with interfaces and classes for CQRS implementation. - Updated `README.md` with documentation and examples for the new CQRS project. - Added new test classes for command and query dispatchers, handlers, and decorators. - Modified `ISynergy.Framework.Documents.csproj` to focus on `net8.0` and `net9.0`, removing support for `netstandard`.
This commit introduces several new classes and methods focused on data conversion, navigation, and exception handling. Key updates include the addition of various converter classes (e.g., `StringToColorBrushConverter`, `RadioButtonToThemeConverter`) for improved data binding and UI interactions. The navigation system has been structured with new classes like `LanguageWindow`, `NoteWindow`, and `SelectionWindow`, enhancing user interaction management. Additionally, the `ClipboardService` class has been implemented for efficient clipboard operations, particularly for image retrieval. Overall, these changes aim to create a more organized, efficient, and user-friendly application, benefiting both developers and end-users.
Updated `AuthenticationService`, `SettingsService`, and `ShellViewModel` to implement asynchronous methods for loading and saving settings, signing out, and handling user interactions. This change enhances application responsiveness and performance by allowing non-blocking operations throughout the codebase. The `ISettingsService` interface has been modified accordingly to reflect these updates. Overall, this refactor promotes better user experience and modern asynchronous programming practices.
Updated the Sentry package version from 5.8.1 to 5.9.0. Updated the Sentry.OpenTelemetry package version from 5.8.1 to 5.9.0.
Enhance ObservableClass with a new method `HasError(string property)` for checking specific property errors. Update ValidationTests to include assertions for the new method, ensuring accurate validation of SelectedItem, ProductGroups, and Quantity properties.
Refactored multiple files to improve null safety, readability, and maintainability: - Added `#pragma warning disable` for non-nullable fields in `TestDbContext` and `TestDataContext`. - Introduced logging in `CommandDispatcher` and `QueryDispatcher` to handle and log exceptions. - Updated `SynchronizationService` and `SyncViewModel` for better null safety and validation. - Improved UI bindings in `.razor` and `.xaml` files for consistency and compile-time validation. - Refactored test setups to include mock loggers and modernized ASP.NET Core test patterns. - Removed unused bindings and simplified layouts in UI components. - Adjusted `ErrorHandling.feature` to remove redundant scenarios. These changes enhance code robustness, improve error handling, and ensure better developer experience.
Enhanced cursor setup in `CursorBehavior.cs` to ensure the correct `MauiContext` is used, even in complex scenarios like dialog windows. Introduced `SetupCursorWhenReady` and helper methods for better context retrieval and deferred setup. Improved error handling in `CursorExtensions.cs` by validating `MauiContext` and platform views, adding detailed logging, and wrapping cursor change logic in `try-catch` blocks to prevent failures from breaking functionality. Refactored code for better readability, maintainability, and resilience, ensuring graceful handling of null references and exceptions.
Enhanced exception handling across services, commands, and ViewModels: - Integrated `IExceptionHandlerService` for centralized exception handling. - Refactored `ObservableClass`, `RelayCommand`, `AsyncRelayCommand`, and `NavigationService` to improve exception safety. - Updated `DialogService` and `ViewModel` event handling to suppress crashes when exceptions occur. Added OpenTelemetry support: - Integrated logging, tracing, and metrics in `MauiAppBuilderExtensions`. - Added `OpenTelemetry.Instrumentation.Http` and `OpenTelemetry.Instrumentation.Runtime` packages. Refactored `ServiceLocator` and `ScopedContextService`: - Improved scope initialization and exception handling during service resolution. Updated unit tests: - Added comprehensive tests for exception handling in commands, services, and ViewModels. - Verified behavior when `IExceptionHandlerService` is unavailable. General improvements: - Removed unused code and namespaces. - Enhanced code readability and maintainability.
Updates NuGet package dependencies to version 10.0.0. Enhances the visual states of Maui controls, providing better user feedback for normal, pressed, pointer over, and disabled states. Also fixes exception handling for async commands.
Renames font files to follow a standard naming convention. Removes opacity and scale settings from the normal state of the button style to achieve a consistent visual appearance across different states. Fixes an issue where button style was not being correctly applied. Updates service registration to be transient.
Addresses a potential race condition in the dialog service by implementing a semaphore to serialize access to dialog creation. This prevents multiple dialogs from being created concurrently, which could lead to unexpected behavior or errors.
Updates Microsoft.Maui.Controls, Microsoft.Maui.Controls.Compatibility, NuGet.Commands, and OpenIddict.Abstractions package versions to align with .NET 10 compatibility. Enabled SourceGen Improves UI and enhances image handling Refines UI elements by introducing dynamic font sizes for improved responsiveness. Enhances image browser functionality by allowing null senders in event handlers to prevent potential errors. Also overrides the Dispose method to ensure proper resource cleanup. Improves color handling and theme styling. Ensures that the application handles color conversions more robustly. Specifically, the string-to-color converter now gracefully handles invalid hex color strings by defaulting to a standard blue color, enhancing the user experience by preventing unexpected visual errors. Also sets default empty string for Color in ThemeStyle. Fixes XAML binding and converter issues Addresses an issue with XAML bindings by switching to runtime inflation. This resolves a compiler error (CS8820) related to source generation. Initializes default values for the BooleanToStringConverter to prevent null reference exceptions. Enables XamlC and resolves CS8820 errors Enables XamlC for both the sample and the framework to improve performance. Addresses CS8820 errors related to compiled bindings by disabling them in specific XAML elements, where necessary. Removes the constructor from NavigationService, likely due to DI container configurations.
Updated the `BenchmarkDotNet` package to version `0.15.7`. Upgraded several `OpenTelemetry` instrumentation packages: - `AspNetCore` from `1.14.0-rc.1` to `1.14.0` - `EntityFrameworkCore` from `1.13.0-beta.2` to `1.14.0-beta.1` - `Http` from `1.14.0-rc.1` to `1.14.0` - `Runtime` from `1.13.0` to `1.14.0` - `SqlClient` from `1.13.0-beta.2` to `1.14.0-beta.1`
Updates several package versions in Directory.Packages.props to their latest available versions, including Azure.Monitor.OpenTelemetry.Exporter, Microsoft.Identity.Client and OpenTelemetry.Instrumentation.EntityFrameworkCore. Updates the currency symbol in the WinUI sample app from "" to "€" to reflect the correct currency for the application, as the app is not using the Turkish Lira.
Upgraded the `Microsoft.Identity.Client` package from version 4.79.1 to 4.79.2 and the `Microsoft.Windows.SDK.BuildTools` package from version 10.0.26100.6901 to 10.0.26100.7175. These updates may include bug fixes, performance improvements, or new features.
Updated the following Syncfusion packages in `Directory.Packages.props` from version 31.2.10 to 31.2.12: - Syncfusion.Chart.WinUI - Syncfusion.DocIO.Net.Core - Syncfusion.DocIORenderer.Net.Core - Syncfusion.Editors.WinUI - Syncfusion.Gauge.WinUI - Syncfusion.Licensing - Syncfusion.Maui.Core - Syncfusion.Pdf.Net.Core - Syncfusion.SfInput.WPF - Syncfusion.SfNavigationDrawer.WPF - Syncfusion.XlsIO.Net.Core This minor version upgrade likely includes bug fixes, performance improvements, or minor feature enhancements.
Migrates the repository to GitHub and configures Azure DevOps for a strict pull request-based workflow. This change updates the pipeline to trigger only on pushes to the `main` branch and pull requests targeting `main`. It also removes the GitHub push task, as GitHub is now the primary repository. This enforces code review and automated validation via PR builds. The GithubPAT variable is also removed from the variable groups as it is no longer needed. A comprehensive migration guide is included.
WalkthroughAdds many documentation and prompt files, updates editor/build/package configs, introduces event-driven application and authentication lifecycle APIs and LoadingView wait method, adds lifecycle unit tests and DI registration, adds tooling scripts and solution metadata, and deletes multiple archived proxy and WebDAV filesystem projects and solution filters. Changes
Sequence Diagram(s)sequenceDiagram
participant UI as EmptyView / LoadingView
participant App as Application / App.xaml.cs
participant Lifecycle as ApplicationLifecycleService
participant Auth as AuthenticationService
rect rgb(232,245,233)
Note over UI,App: Startup signals (any order)
UI->>Lifecycle: SignalUiReady()
App->>Lifecycle: SignalApplicationInitialized()
end
rect rgb(232,240,255)
Note over Lifecycle: Atomic coordination (Interlocked) → fires once
Lifecycle->>Lifecycle: Coordinate signals
Lifecycle-->>App: ApplicationLoaded()
end
rect rgb(255,244,234)
Note over Auth,App: Post-load authentication events
Auth-->>App: AuthenticationSucceeded(AuthenticationSuccessEventArgs)
Auth-->>App: AuthenticationFailed()
App->>App: Deterministic navigation / single entry point
end
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes
Poem
Pre-merge checks and finishing touches✅ Passed checks (3 passed)
✨ Finishing touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This pull request upgrades the I-Synergy Framework from .NET 9 to .NET 10, consolidating the codebase onto the latest .NET version and updating all dependencies accordingly.
Key Changes:
- Updated target framework from
net9.0tonet10.0across all projects - Upgraded all Microsoft packages from 9.x to 10.x versions
- Updated third-party dependencies to latest compatible versions
- Removed archived/deprecated projects and solution files
- Enhanced project documentation and added new development tooling
Reviewed Changes
Copilot reviewed 118 out of 2756 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| Directory.Packages.props | Updated all package versions to .NET 10 compatible releases, including Microsoft.AspNetCore.* (10.0.0), Microsoft.EntityFrameworkCore.* (10.0.0), and third-party packages |
| Directory.Build.props | Updated LangVersion to 14.0, adjusted copyright format, removed obsolete properties, added NuGetAuditMode |
| README.md | Completely restructured with .NET 10 branding, improved organization, and modern markdown formatting |
| I-Synergy.Framework.slnx | New solution file format for Visual Studio 2025 with organized folder structure |
| Remove-UnusedPackages.ps1 | New PowerShell script for cleaning up unused package references |
| archived/* | Removed deprecated WebDav and Proxy projects no longer needed |
| .github/prompts/* | Added comprehensive AI-assisted development prompts and documentation |
| global.json | Updated SDK version to 10.0.100 |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 26
🧹 Nitpick comments (61)
.github/prompts/update-markdown-file-index.prompt.md (1)
1-76: Capitalize "Markdown" as a proper noun throughout the prompt.The prompt is well-structured and comprehensive. However, there are three instances where "Markdown" should be capitalized as it is a proper noun (the name of a markup language). Apply this diff to fix the capitalization:
- 6. **Validate**: Ensure markdown syntax is valid and formatting is consistent + 6. **Validate**: Ensure Markdown syntax is valid and formatting is consistent- 📋 **Preserve**: Maintain existing markdown formatting, heading levels, and document flow + 📋 **Preserve**: Maintain existing Markdown formatting, heading levels, and document flow- Validate all generated markdown syntax + Validate all generated Markdown syntax.github/prompts/ef-core.prompt.md (1)
27-34: Performance section is strong, though consider mentioning query compilation timing.The performance section covers key concerns (AsNoTracking, pagination, eager loading, projection, N+1 avoidance). One minor refinement: the compiled queries guidance (line 33) could benefit from a note that compilation is worthwhile primarily for queries executed many times in performance-critical paths, as compilation overhead can outweigh benefits for infrequently-used queries—though this is a nuance rather than an omission.
If desired, expand line 33 to:
-- Use compiled queries for frequently executed queries +- Use compiled queries for frequently executed queries (compilation overhead is worthwhile only for queries executed many times).github/prompts/create-implementation-plan.prompt.md (1)
64-66: Minor grammar: Hyphenate compound adjectives.Line 66 references "bright green badge" and "yellow badge". When compound adjectives precede a noun, they should be hyphenated for consistency and correctness.
Apply this diff:
-The status of the implementation plan must be clearly defined in the front matter and must reflect the current state of the plan. The status can be one of the following (status_color in brackets): `Completed` (bright green badge), `In progress` (yellow badge), `Planned` (blue badge), `Deprecated` (red badge), or `On Hold` (orange badge). It should also be displayed as a badge in the introduction section. +The status of the implementation plan must be clearly defined in the front matter and must reflect the current state of the plan. The status can be one of the following (status_color in brackets): `Completed` (bright-green badge), `In progress` (yellow badge), `Planned` (blue badge), `Deprecated` (red badge), or `On Hold` (orange badge). It should also be displayed as a badge in the introduction section..github/docs/DEMO_AUTHENTICATION_SERVICE_GUIDE.md (3)
70-71: Fix code example formatting.The multi-line token generation example has inconsistent indentation that may confuse readers about intended formatting.
- return Convert.ToBase64String(Guid.NewGuid().ToByteArray()) + - Convert.ToBase64String(Guid.NewGuid().ToByteArray()); + return Convert.ToBase64String(Guid.NewGuid().ToByteArray()) + + Convert.ToBase64String(Guid.NewGuid().ToByteArray());
119-141: Clean up indentation inconsistencies in event handling examples.Several code examples have irregular spacing that could confuse readers. For example, lines 123, 128-129, and 141 have mixed indentation:
if (token is not null) { - IsAuthenticated = true; + IsAuthenticated = true; RaiseAuthenticationSucceeded(shouldRemember); } else { - IsAuthenticated = false; - RaiseAuthenticationFailed(); + IsAuthenticated = false; + RaiseAuthenticationFailed(); }And in the exception handling example:
try { - AuthenticationSucceeded?.Invoke(this, - new AuthenticationSuccessEventArgs(shouldRemember)); + AuthenticationSucceeded?.Invoke(this, + new AuthenticationSuccessEventArgs(shouldRemember)); }
235-248: Improve the assertion test example to handle both remember-me states.The test on line 242 asserts
ShouldRememberunconditionally, but the example calls the method withtrue. This could mislead developers testing withremember: false. Clarify by showing both cases or adjusting the assertion logic:var eventFired = false; + bool rememberedCorrectly = false; authService.AuthenticationSucceeded += (s, e) => { eventFired = true; - Assert.IsTrue(e.ShouldRemember); // If remember=true was passed + rememberedCorrectly = (e.ShouldRemember == true); }; await authService.AuthenticateWithUsernamePasswordAsync("test", "pwd", true); Assert.IsTrue(eventFired); + Assert.IsTrue(rememberedCorrectly);.github/prompts/generate-custom-instructions-from-codebase.prompt.md (1)
36-212: Consider restructuring nested markdown code blocks for clarity.The outer fenced block (line 38–212) contains a nested markdown code block with triple backticks (lines 78–167). While technically valid, this dual nesting can confuse renderers and readers. Consider extracting the generated output as a separate documented example or using a clearer structural pattern that avoids triple-backtick nesting within fenced blocks.
.github/prompts/postgresql-optimization.prompt.md (1)
1-6: Well-structured Copilot prompt with sound PostgreSQL guidance.The YAML front matter is correctly formatted with appropriate agent mode configuration and tool selection. The description accurately captures the scope of the prompt.
One optional note: The
tested_withdate (July 20, 2025) is approximately 4 months old. Consider updating it to the current validation date or removing the timestamp if versioning is not tracked this way..github/copilot-solid-guidelines.md (1)
1-857: Comprehensive SOLID principles documentation with excellent code examples.The guide provides clear explanations of all five SOLID principles with well-structured bad/good code examples, practical implementation patterns, and actionable best practices. The documentation effectively supports the PR objective of establishing comprehensive Copilot guidelines and coding standards for the I-Synergy Framework.
The code examples demonstrate idiomatic C# practices including async/await patterns, dependency injection, generics, and modern design patterns. The progression from principle definition through real-world examples (Strategy pattern, Factory pattern, Domain-Driven Design with domain events) is pedagogically sound.
Optional enhancement: Consider adding a brief preamble (1-2 sentences) explicitly mentioning that these guidelines target .NET 10+ development to align with the PR's modernization objectives. This would reinforce that the recommended patterns leverage contemporary .NET runtime capabilities.
.github/prompts/create-unittest.prompt.md (2)
14-14: Specify MSTest package names for clarity.Line 14 should reference the specific NuGet packages required. For .NET, this typically includes
Microsoft.VisualStudio.TestPlatform.TestFrameworkandMicrosoft.VisualStudio.TestPlatform.TestFramework.Extensions.Update this line to:
- Reference MSTest package + Reference MSTest packages: `Microsoft.VisualStudio.TestPlatform.TestFramework` and `Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions`
37-43: Clarify that[TestProperty]is metadata, not a data source.Line 42 lists
[TestProperty]alongside data source attributes like[DataRow]and[DynamicData], which may mislead readers.[TestProperty]is used to annotate tests with metadata/tags, not to drive test data. Consider moving it to the "Test Organization" section or removing it from the data-driven tests context.## Data-Driven Tests - Use `[TestMethod]` combined with data source attributes - Use `[DataRow]` for inline test data - Use `[DynamicData]` for programmatically generated test data -- Use `[TestProperty]` to add metadata to tests - Use meaningful parameter names in data-driven testsAlternatively, move the
[TestProperty]guidance to the "Test Organization" section where it is contextually more appropriate..github/docs/AUTHENTICATION_LEGACY_MESSAGE_REMOVAL.md (2)
1-295: Consider improving accessibility by reducing emoji dependency.The documentation relies heavily on emojis (✓, ✗, →, ?, etc.) throughout for visual emphasis. While visually distinctive, this approach may:
- Not render consistently across all platforms and markdown renderers
- Create accessibility issues for screen reader users
- Reduce clarity when viewed in plain-text or low-resource environments
Consider using markdown alternatives like:
**bold**or***bold italic***for emphasis-bullet lists (already used effectively in places)- Plain text markers like
[DONE],[BREAKING],[TODO]Example refactor for lines 87-96:
-? **Single Source of Truth**: Only events, no message duplication -? **Cleaner Code**: Removed 50+ lines of message-handling code +**✓ Single Source of Truth**: Only events, no message duplication +**✓ Cleaner Code**: Removed 50+ lines of message-handling codeOr more accessibly:
-? **Single Source of Truth**: Only events, no message duplication +[BENEFIT] **Single Source of Truth**: Only events, no message duplication
198-216: Document migration timeline and impact scope.The backward compatibility section (lines 198-216) clearly marks this as a breaking change with a good migration code snippet. However, consider adding:
- Impact scope: Which projects/components are affected (all consuming this service, sample apps only, etc.)
- Timeline: When will the legacy approach be removed from the codebase entirely?
- Deprecation warnings: Should the old message be marked
[Obsolete]in code to guide developers?- Sample implementation: More complete example showing wiring in DI container
This would reduce integration friction and make the migration path more actionable for consuming teams.
.github/prompts/documentation-writer.prompt.md (1)
10-10: Wrap bare URL in angle brackets per Markdown best practices.The bare URL should be wrapped to comply with the MD034 (no-bare-urls) rule from markdownlint.
Apply this diff:
-Your work is strictly guided by the principles and structure of the Diátaxis Framework (https://diataxis.fr/). +Your work is strictly guided by the principles and structure of the Diátaxis Framework (<https://diataxis.fr/>)..github/prompts/usecases-gherkin-specs.prompt.md (1)
1-166: Content coherence and prompt effectiveness are strong.The prompt establishes a robust framework for enterprise-grade specification generation with clear governance, traceability, and validation rules. The emphasis on SOLID, Clean Code, functional programming patterns (Result, Option), and BDD/TDD aligns well with modern .NET architecture practices. Constraints against MediatR/AutoMapper/SpecFlow and guidance toward Reqnroll and internal Shared alternatives are pragmatic.
Minor note: Ensure this prompt is discoverable and well-documented for team members. Consider adding a brief README in
.github/prompts/that indexes all available prompts and their intended use cases.I-Synergy.Framework.slnx (1)
63-65: Consider deploying Sample.Maui for all configurations.
Sample.Mauiis configured to deploy only forDebug|Any CPU, whileISynergy.Framework.UI.Maui(line 53) and the Windows samples (lines 72, 79) deploy for all configurations. Unless there's a specific reason to limit deployment to Debug builds, consider using an empty<Deploy />element for consistency and to enable Release deployment.Apply this diff if Release deployment should be enabled:
<Project Path="samples/Sample.Maui/Sample.Maui.csproj"> - <Deploy Solution="Debug|Any CPU" /> + <Deploy /> </Project>.github/copilot-cleancode-guidelines.md (1)
12-23: Add language specifier to fenced code block.Line 12 has a fenced code block without a language specifier. Add
textafter the opening triple backticks to properly render the project structure.### Project Structure -``` +```text ProjectName/.github/prompts/create-readme.prompt.md (1)
14-20: Wrap bare URLs in markdown link syntax.URLs should be formatted as markdown links for proper rendering:
- - https://raw.githubusercontent.com/Azure-Samples/serverless-chat-langchainjs/refs/heads/main/README.md - - https://raw.githubusercontent.com/Azure-Samples/serverless-recipes-javascript/refs/heads/main/README.md - - https://raw.githubusercontent.com/sinedied/run-on-output/refs/heads/main/README.md - - https://raw.githubusercontent.com/sinedied/smoke/refs/heads/main/README.md + - [serverless-chat-langchainjs](https://raw.githubusercontent.com/Azure-Samples/serverless-chat-langchainjs/refs/heads/main/README.md) + - [serverless-recipes-javascript](https://raw.githubusercontent.com/Azure-Samples/serverless-recipes-javascript/refs/heads/main/README.md) + - [run-on-output](https://raw.githubusercontent.com/sinedied/run-on-output/refs/heads/main/README.md) + - [smoke](https://raw.githubusercontent.com/sinedied/smoke/refs/heads/main/README.md)Also wrap the GitHub admonition syntax link:
-5. Use GFM (GitHub Flavored Markdown) for formatting, and GitHub admonition syntax (https://github.com/orgs/community/discussions/16925) where appropriate. +5. Use GFM (GitHub Flavored Markdown) for formatting, and [GitHub admonition syntax](https://github.com/orgs/community/discussions/16925) where appropriate.And change "open source" to "open-source" on line 8.
.github/docs/BDD_COMPLETE_DELIVERY_REPORT.md (1)
28-28: Add language specifiers to fenced code blocks.Multiple code blocks are missing language specifiers, which impacts syntax highlighting and documentation clarity. Add
bashor appropriate language identifier to all fenced code blocks.Example fix for lines 28, 138, 154, 170:
-``` +```bash dotnet test tests\ISynergy.Framework.MessageBus.Tests\ --filter "FullyQualifiedName~Feature" -``` +```bashAlso applies to: 138-138, 154-154, 170-170
.github/docs/BDD_TESTS_FINAL_SUMMARY.md (2)
25-25: Add language specifiers to fenced code blocks.Three code blocks lack language specifiers affecting syntax highlighting. Add
powershell,bash, orcsharpas appropriate.Also applies to: 52-52, 84-84
313-318: Minor: Use hyphenated compound adjectives before nouns.Line 316 references "API rate limiting" — when used as a compound adjective modifying a noun, use "rate-limiting" (hyphenated).
.github/docs/BDD_FINAL_DELIVERY_SUMMARY.md (2)
15-15: Add language specifiers to fenced code blocks.Four code blocks lack language specifiers. Add
bash,powershell, orcsharpas appropriate for better syntax highlighting and rendering.Also applies to: 26-26, 33-33, 51-51
70-70: Minor: Hyphenate compound adjectives before nouns.Line 70 uses "Production ready" — when placed before a noun as a compound adjective, use "production-ready" (hyphenated).
.github/docs/BDD_FINAL_COMPLETE_STATUS.md (2)
31-36: Add language specifier to code block.Line 31 has a code block without language identifier. Add
plaintextor appropriate language for better rendering.
224-224: Minor: Hyphenate compound adjectives before nouns.Line 224 uses "Production ready" — when used as a compound adjective before a noun, use "production-ready" (hyphenated).
README.md (2)
186-186: Consider converting emphasis to a proper heading for accessibility.Line 186 uses emphasis markers (
**...**) to format the closing statement, which linters flag as an anti-pattern. Consider converting to a proper Markdown heading or HTML semantic element for better accessibility and semantics.-**Made with ❤️ by I-Synergy** +## Made with ❤️ by I-Synergy
77-78: Standardize "Microsoft 365" naming in package descriptions.Lines 77–78 reference the package I-Synergy.Framework.Mail.Microsoft365, which uses the concatenated form per NuGet convention. However, in the table context (description/label), consider using the standard spacing: "Microsoft 365" instead of "Microsoft365" for clarity and consistency with brand guidelines.
.github/docs/UNIT_TESTS_FIX_REPORT.md (1)
96-109: Add language identifiers to fenced code blocks.Lines 96–109 and 114–118 contain fenced code blocks without language identifiers. While these are ASCII diagrams and status blocks (not executable code), adding a language tag improves markdown linting compliance and rendering clarity.
For the diagram block (lines 96–109), consider using a comment-style or plain text identifier. For the status block (lines 114–118), use a generic identifier or keep as-is if meant to be plaintext.
Also applies to: 114-118
.github/docs/UNIT_TESTS_RESOLUTION_COMPLETE.md (1)
15-25: Add language identifiers to all fenced code blocks for consistency.Multiple fenced code blocks throughout this file (lines 15–25, 33–54, 59–81, 113–129, 145–151) lack language identifiers. Add
csharporbashtags as appropriate to comply with markdown linting standards and improve syntax highlighting in rendered documentation.-\`\`\` +\`\`\`csharp // Setup event EventHandler? MyEvent;Also applies to: 33-54, 59-81, 113-129, 145-151
.github/prompts/dotnet-best-practices.prompt.md (1)
73-73: Consider updating .NET version reference for consistency with .NET 10 upgrade.Line 73 references ".NET 8 optimizations." Since this PR is upgrading the framework to .NET 10, consider updating this to reference the latest available optimizations:
-- Use C# 12+ features and .NET 8 optimizations where applicable +- Use C# 13+ features and .NET 10 optimizations where applicable.github/copilot-instructions.md (2)
16-16: Update .NET version reference to .NET 10 for consistency.Line 16 references ".NET8" in the context of the Technology Stack. Since this PR upgrades the framework to .NET 10, update this for consistency:
-- **.NET8** with **C#13** language features +- **.NET 10** with **C# 13** language features
105-105: Add language identifier to code block.Line 105 contains a fenced code block (Project Layout diagram) without a language identifier. Add a tag for markdown linting compliance:
-\`\`\` +\`\`\` Solution/Note: This diagram block may remain without a language identifier if intended as plaintext, but adding one improves linter compliance.
.github/copilot-logging-guidelines.md (1)
32-36: Add blank line before Event ID Categories table for markdown compliance.Line 32–36 contains the "## Event ID Categories" section header immediately followed by the table at line 36. Add a blank line between the header and table for markdown linting compliance (MD058):
## Event ID Categories + The logging system uses categorized EventId constants....github/docs/BDD_100_PERCENT_COMPLETE.md (2)
225-227: Add language identifiers to bash command blocks.Lines 225–259 contain bash command examples without language identifiers. Add
bashtags to these fenced code blocks for proper syntax highlighting and markdown linting compliance:-\`\`\` +\`\`\`bash dotnet test --filter "FullyQualifiedName~Feature"Also applies to: 233-235, 239-241, 244-247, 250-259
94-108: Ensure blank lines surround tables for markdown compliance.Tables at lines 94–108 and 103–108 should be surrounded by blank lines per markdown linting standards (MD058). Verify that blank lines appear before and after each table:
### Overall Progress + | Metric | Target | Achieved | Status | + |--------|--------|----------|---------|Also applies to: 103-108
.github/docs/BDD_FINAL_TEST_RESULTS.md (2)
33-33: Format the bare URL as a Markdown link.The bare URL should be properly formatted as a Markdown link for better readability and to resolve the static analysis warning.
Apply this diff:
-**Note**: Transaction and some query tests are skipped because **EF Core in-memory database doesn't support transactions** and has limited query capabilities. This is a known limitation documented at: https://go.microsoft.com/fwlink/?LinkId=800142 +**Note**: Transaction and some query tests are skipped because **EF Core in-memory database doesn't support transactions** and has limited query capabilities. This is a known limitation documented at: <https://go.microsoft.com/fwlink/?LinkId=800142>
15-20: Add language identifiers to fenced code blocks.The code blocks displaying test results should have a language identifier for proper syntax highlighting and to resolve static analysis warnings. Consider using
textorconsolefor test output.Apply this diff:
-``` +```text ? Passed: 9 scenarios ?? Skipped: 1 scenario ? Failed: 0 ?? Duration: ~1 secondApply similar changes to the code blocks at lines 26-31 and 51-56. Also applies to: 26-31, 51-56 </blockquote></details> <details> <summary>.github/copilot-cqrs-guidelines.md (1)</summary><blockquote> `102-107`: **Add language identifier to code block.** The code block showing design rules should have a language identifier for consistency with the rest of the document. Apply this diff: ```diff -### Design Rules -``` -- **Immutable objects**: Use records or readonly properties +### Design Rules +```text +- **Immutable objects**: Use records or readonly properties - **No business logic**: Commands and queries contain only data - **Input validation**: Use data annotations or validators - **Clear intent**: Names should express the business operation</blockquote></details> <details> <summary>.github/docs/BDD_COMPLETE_FRAMEWORK_STATUS.md (1)</summary><blockquote> `59-63`: **Add language identifier to code block.** The code block listing features should have a language identifier for consistency. Apply this diff: ```diff -**Features**: -``` +**Features**: +```text 1. Command Execution - 6 scenarios 2. Property Change Notification - 5 scenarios 3. ViewModel Lifecycle - 4 scenarios</blockquote></details> <details> <summary>Remove-UnusedPackages.ps1 (2)</summary><blockquote> `20-48`: **Regex‑based XML editing and .csproj‑only scan can misclassify packages** Functionally this works for the “central package management via Directory.Packages.props + `<PackageReference Include="..."/>` in .csproj” pattern, but there are a few edge cases to be aware of: - The regexes assume a very specific shape for `<PackageVersion ... />` and `<PackageReference ... />`. If you later introduce extra attributes (e.g., `Condition=`, custom metadata) or slightly different formatting, those entries may not be picked up or removed correctly. - Only `*.csproj` files are scanned. Any packages referenced exclusively from other MSBuild files (e.g., `Directory.Build.props`, custom `.props`/`.targets`, or non‑C# project types) will look “unused” and could be removed incorrectly. - Given this script mutates a central file, a more robust approach would be to parse as XML (e.g., `[xml]$doc = Get-Content ...`) and modify the relevant nodes instead of relying on regex. If you want to harden this for long‑term use, consider switching to XML parsing and, optionally, including other MSBuild file types in the scan. Also applies to: 55-57, 75-105 --- `4-8`: **Polish WhatIf UX and final output message** A couple of small, non‑blocking polish items: - Using `[switch]$WhatIf = $false` works, but in PowerShell scripts it’s more idiomatic either to rely on `[switch]$WhatIf` without a default or to enable `SupportsShouldProcess` and use the built‑in `-WhatIf/-Confirm` semantics. - The completion message on Line 117 currently ends with `"optimized! ?"`, which looks like a stray placeholder character. Consider changing it to something cleaner, e.g.: - `Write-Host "\`nYour Directory.Packages.props is already optimized! ✅" -ForegroundColor Green` These are cosmetic only and can be deferred. Also applies to: 75-78, 116-118 </blockquote></details> <details> <summary>.github/docs/LEGACY_REMOVAL_SUMMARY.md (1)</summary><blockquote> `1-19`: **Clean up stray `?` markers and emoji placeholders** The summary reads well, but there are several places where `?`, `??`, and `??` prefix markers appear immediately before emphasized text (for example around “REMOVED/KEPT”, “Build Status”, and the “1000x Faster / Cleaner / Type-Safe / Modern” bullets). These look like placeholder artifacts from emojis rather than intentional Markdown. To keep the docs clear and professional: - Replace these `?`/`??` markers with either proper emojis (e.g., ✅, 🚀) or standard Markdown bullets without the extra character. - Optionally tone down hyperbolic claims like “1000x Faster” if you want the doc to read more as an engineering change log than marketing copy. Also applies to: 61-71, 67-70, 74-74 </blockquote></details> <details> <summary>.github/prompts/architectural-code-review-modernize.prompt.md (1)</summary><blockquote> `87-87`: **Address markdownlint warnings (emphasis spacing and bare URL)** Per the markdownlint hints: - Line 36/nearby: there is a “spaces inside emphasis markers” warning (MD037). Please remove any spaces immediately inside `*` or `**` markers (e.g., change `* text *` to `*text*`) in that area. - Line 222: the bare URL for the Microsoft architecture patterns triggers MD034. Consider rephrasing to something like: ```diff - Reference Microsoft architecture patterns: https://learn.microsoft.com/en-us/azure/architecture/patterns/ + Reference [Microsoft architecture patterns](https://learn.microsoft.com/en-us/azure/architecture/patterns/).This keeps the prompt clean and lint‑friendly.
Also applies to: 221-222
.github/docs/AUTHENTICATION_LIFECYCLE_QUICK_REFERENCE.md (1)
9-21: Tighten sample code (undefined variables, minor formatting, and?markers)A few small issues in the quick‑reference that are worth polishing:
- Lines 17–20 (“Before” message‑based snippet): the
elseline is mis‑indented. Not a correctness problem, but aligning it with theifbranch will make the snippet cleaner to copy/paste.- Lines 73–91 (
ValidateToken): the snippet callsMessengerService.Default.Send(new AuthenticationChangedMessage(profile));butprofileis not declared in the method. Either add it as a parameter / derive it fromtokenin the example, or remove it from the snippet so it compiles as‑shown.- Lines 128–135 (“Handle Auto‑Login”):
usernameis referenced but never declared. Consider passing it as a parameter or using an existing property (e.g.,_settingsService.LocalSettings.DefaultUser) so the example is self‑contained.- Several bullets and table entries are prefixed with
?/??markers (e.g., in Key Benefits, Files Changed, Migration Status). These look like lost emoji placeholders; replacing them with proper emojis (✅,⚠️ , etc.) or plain bullets would improve readability.These are documentation‑only fixes but will make the guide more precise and easier for consumers to follow.
Also applies to: 73-91, 126-138, 96-101
.github/docs/AUTHENTICATION_LIFECYCLE_IMPLEMENTATION_COMPLETE.md (1)
74-101: Add language specification to fenced code blocks.Lines 74–101 contain an ASCII art diagram inside a fenced code block without a language identifier. While this may render correctly, it should specify a language for consistency and proper tooling support.
Apply this diff:
-``` +```text ???????????????????????????????????????? ? User Interaction Layer ?Consider applying the same fix to other code blocks lacking language specs (lines 105–125, 213–219).
.github/docs/APPLICATION_LIFECYCLE_SERVICE_TESTS.md (1)
358-375: Add language specification to fenced code block.The table/ASCII art diagram at lines 358–375 is inside a fenced code block without a language identifier. This should be labeled as
textor similar for consistency.Apply this diff:
-``` +```text ??????????????????????????????????????????? ? ApplicationLifecycleService Coverage ?.github/docs/AUTHENTICATION_LIFECYCLE_SERVICE.md (2)
11-51: Add language specification to fenced code blocks.The ASCII architecture diagram at lines 11–51 is inside a fenced code block without a language identifier. Add
textor similar for consistency.Apply this diff:
-``` +```text ??????????????????????????????????????? ? AuthenticationService ?The same applies to the event flow diagram at lines 217–267.
276-276: Consider improving word choice for clarity.The phrase "Centralized but hard to debug" (line 276) could be strengthened per style guidelines. Consider: "Centralized but difficult to debug" or "Centralized but challenging to debug" for more formal documentation.
.github/docs/MULTI_PLATFORM_IMPLEMENTATION_COMPLETE.md (1)
74-86: Add language specification to fenced code block.The event flow diagram at lines 74–86 lacks a language identifier in the fenced code block. Add
textfor consistency.Apply this diff:
-``` +```text User Action ?.github/docs/UNIT_TESTS_QUICK_REFERENCE.md (1)
171-198: Add language specification to fenced code blocks.The ASCII art diagrams at lines 171–198 (visual test flow and pipeline example) are inside fenced code blocks without language identifiers. Add
textoryaml(for the DevOps pipeline) for consistency.Apply this diff:
-``` +```text ?? Initialize ???????????????????For the pipeline example at line 214, use:
-``` +```yaml - task: DotNetCoreCLI@2.github/docs/BDD_TESTS_CREATED_SUMMARY.md (2)
14-30: Fix Markdown list indentation formatting.Multiple unordered lists have inconsistent indentation that violates Markdown standards. Lines 16–20 and 24–27 show nested items indented with 3 spaces instead of the required 2 spaces or 4 spaces (depending on style preference). This should be standardized across all lists for consistency.
Apply this diff to fix the indentation:
- #### Features (2): - 1. **Message Publishing** (5 scenarios) + #### Features (2): + + 1. **Message Publishing** (5 scenarios) - - ? Publishing a message to a topic + - ✓ Publishing a message to a topic - - ? Publishing multiple messages to the same topic + - ✓ Publishing multiple messages to the same topicEnsure all nested list items use consistent indentation (typically 2 or 4 spaces, applied uniformly).
68-90: Add language specification to code blocks.The C# code block at lines 68–72 and others lack a language identifier. Specify
csharpfor syntax highlighting:- ``` + ```csharp // Instead of: Id = 1This improves readability and rendering in documentation viewers.
.github/docs/BDD_TESTS_EXPANSION_PLAN.md (2)
14-30: Standardize unordered list indentation.Lines 15–28 contain inconsistent nested list formatting. The first-level list items (lines 16, 24) should align properly with their sub-items. Apply consistent 2-space or 4-space indentation throughout nested lists.
113-151: Specify language for tree-structure code block.Line 115 code block representing file structure lacks a language specifier. Use a language identifier such as
plaintextortextfor better rendering:- ``` + ```plaintext tests/.github/docs/BDD_REMAINING_WORK.md (1)
95-104: Add language specification to tree-structure code block.The file tree visualization at line 89 onwards lacks a language identifier. Specify
plaintext:- ``` + ```plaintext | Project | Files to Create | Lines of Code (est.) |.github/docs/IMPLEMENTATION_CHECKLIST.md (1)
338-348: Fix nested list indentation in "Next Actions" section.Lines 343–347 in the "Merge" section show inconsistent indentation. The list items should align with proper Markdown nesting:
3. **Merge**: - - [ ] Update version (minor bump) - - [ ] Create release notes - - [ ] Deploy to NuGet - - [ ] Announce to consumers + - [ ] Merge to development branch + - [ ] Update related documentation + - [ ] Notify team of breaking changesEnsure all nested items maintain consistent spacing (typically 2–4 spaces).
.github/docs/UNIT_TESTS_COMPLETION_CHECKLIST.md (1)
156-170: Add language specifications to code blocks.Multiple code blocks representing file structures and test architecture lack language identifiers. Add
plaintextortextto these blocks (lines 156, 192, 214, 321) for proper rendering:- ``` + ```plaintext ApplicationLifecycleServiceTestsThis applies to:
- Line 156: Test architecture tree
- Line 192: Expected test results
- Line 214: File structure tree
- Line 321: File structure listing
.github/docs/MAUI_APPLICATION_LIFECYCLE_REFACTOR.md (1)
72-110: Specify language for ASCII diagram and log format blocks.Lines 72–110 contain an ASCII flow diagram and lines 293–299 contain log format examples. Both should include language specifiers:
- ``` + ```plaintext ─────────────────────────────────────────── ? MAUI Application Startup ?- ``` + ```plaintext [TRACE] ApplicationLifecycleService instantiated.github/docs/UNIT_TESTS_IMPLEMENTATION_COMPLETE.md (2)
171-220: Add language specifications to visualization code blocks.Multiple code blocks representing tables, results, and architecture diagrams lack language specifiers (lines 171, 192, 214, 321). Add
plaintextortextfor consistency:- ``` + ```plaintext ??????????????????????????????????????? ? Test Coverage Summary ? ???????????????????????????????????????
309-318: Fix nested list indentation in "Next Steps" section.Lines 311–312 show misaligned list indentation in the CI/CD integration step. Ensure proper nesting:
4. ? **Integrate into CI/CD** - - Add to Azure DevOps pipeline - - Add to GitHub Actions + - Add to Azure DevOps pipeline + - Add to GitHub Actions.github/docs/BIOMETRIC_AUTH_PRACTICAL_EXAMPLE.md (1)
429-429: Simplify redundant phrase on line 429.The phrase "single point in time" is redundant. Consider: "providing a reliable, single point when both UI and business logic are ready" or "providing a reliable point in time when..."
| ## Key Benefits | ||
|
|
||
| ? **Single Source of Truth**: Only events, no message duplication | ||
| ? **Cleaner Code**: Removed 50+ lines of message handling code |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix compound modifier hyphenation.
Line 90 should use a hyphen when "message handling" modifies "code" as a compound modifier.
Apply this diff:
-? **Cleaner Code**: Removed 50+ lines of message handling code
+? **Cleaner Code**: Removed 50+ lines of message-handling code📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| ? **Cleaner Code**: Removed 50+ lines of message handling code | |
| ? **Cleaner Code**: Removed 50+ lines of message-handling code |
🧰 Tools
🪛 LanguageTool
[grammar] ~90-~90: Use a hyphen to join words.
Context: ...ner Code**: Removed 50+ lines of message handling code ? Type Safety: Event...
(QB_NEW_EN_HYPHEN)
🤖 Prompt for AI Agents
In .github/docs/AUTHENTICATION_LEGACY_MESSAGE_REMOVAL.md around line 90, the
phrase "message handling code" should use a hyphen when used as a compound
modifier; update the text to "message-handling code" on that line to correct
hyphenation.
| - **InitializeApplicationAsync** completes ? Business logic is ready | ||
| - **ApplicationLoaded event** fires ? Both are ready, safe to navigate | ||
|
|
||
| ``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Specify language for fenced code blocks or convert to plain text.
Several fenced code blocks lack language specification (lines 100, 253, 261, 275, 285, 294, 299). These appear to be ASCII flow diagrams. Either:
- Add a language identifier (e.g.,
```text) for consistency with linting standards, or - Convert to indented code blocks if not executable code.
Recommend option 1 for consistency. Example fix:
-```
+```text
EmptyView.Loaded
? (signals UI ready)Also applies to: 253-253, 261-261, 275-275, 285-285, 294-294, 299-299
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)
100-100: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
.github/docs/BIOMETRIC_AUTH_PRACTICAL_EXAMPLE.md lines 100, 253, 261, 275, 285,
294, 299: several fenced code blocks currently have no language tag (they're
ASCII flow diagrams); update each fenced block to include a language identifier
such as ```text (or, alternatively, convert them to indented code blocks) so
they comply with linting standards—prefer adding ```text for consistency across
the file and update each opening fence accordingly.
| ## Output Format | ||
|
|
||
| Your response must be a single markdown document with these sections and schemas: | ||
|
|
||
| --- | ||
|
|
||
| # Reasoning | ||
| - Clearly structured, step-by-step explanation of the logic and assumptions for proposed use cases and scenarios. Use narrative or bullet points. Do not copy use case details here. | ||
|
|
||
| # Use Cases | ||
| For each use case, provide: | ||
| - Title: <string> [UC:<Feature>.<Action>] | ||
| - Summary: <string> | ||
| - Actors: <comma-separated list> | ||
| - Triggers: <string> | ||
| - Main Flow: | ||
| 1. <step 1> | ||
| 2. <step 2> | ||
| ... | ||
| - Alternate Flow(s): | ||
| 1a. <alternate step> | ||
| 1b. <alternate step> | ||
| ... | ||
| (write 'None' if not applicable) | ||
| - Preconditions: <string or 'None'> | ||
| - Postconditions: <string or 'None'> | ||
| - Traceability (Sync Mode): | ||
| - Feature: <string> | ||
| - Application Handler(s): <project/path/Class> | ||
| - Presentation Endpoint(s): <route/method> | ||
| - Domain Entities/Events: <list> | ||
| - Unit Tests: <project/file/method> | ||
| - BDD Specs: <project/path/feature: scenario/tag> | ||
|
|
||
| # Gherkin Specification | ||
| A valid Gherkin .feature file, containing at minimum: | ||
| - Feature header and description | ||
| - Background (optional) | ||
| - At least one Scenario or Scenario Outline with Given/When/Then steps | ||
| - Edge cases and error handling scenarios | ||
| - Tags `@UC:<id>` and, when applicable, `@Test:<Project>:<Class>.<Method>` | ||
| - [PLACEHOLDER] values where detailed business data is not specified | ||
|
|
||
| # Trace Map & Change Log (Sync Mode only) | ||
| - Trace Map: <bullet list mapping UC ⇄ Handler ⇄ Endpoint ⇄ UnitTest ⇄ Scenario> | ||
| - Change Log: <concise summary of updates> | ||
|
|
||
| --- | ||
|
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix "Markdown" capitalization and list indentation in the schema section.
Lines 108–164 define the output schema. Capitalization of "Markdown" should be corrected at lines 110 and 164. List indentation at lines 118–141 should also comply with MD007 (2 spaces for top-level list items, 4 spaces for sub-items).
Apply this diff:
- ## Output Format
- Your response must be a single markdown document with these sections and schemas:
+ ## Output Format
+ Your response must be a single Markdown document with these sections and schemas:And update list indentation from 4 spaces to 2 spaces for top-level items, and from 6 spaces to 4 spaces for nested items:
- For each use case, provide:
- - Title: <string> [UC:<Feature>.<Action>]
- - Summary: <string>
+ For each use case, provide:
+ - Title: <string> [UC:<Feature>.<Action>]
+ - Summary: <string>(Apply this correction systematically to all nested lists in the schema.)
Committable suggestion skipped: line range outside the PR's diff.
🧰 Tools
🪛 LanguageTool
[grammar] ~108-~108: Ensure spelling is correct
Context: ...ness data would be required. ## Output Format Your response must be a single markdown ...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[uncategorized] ~110-~110: Did you mean the formatting language “Markdown” (= proper noun)?
Context: ... Format Your response must be a single markdown document with these sections and schema...
(MARKDOWN_NNP)
[grammar] ~144-~144: Ensure spelling is correct
Context: ...aining at minimum: - Feature header and description - Background (optional) - At least one Sce...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
🤖 Prompt for AI Agents
In .github/prompts/usecases-gherkin-specs.prompt.md around lines 108–156, fix
two formatting issues: change the lowercase "Markdown" to "Markdown" at the
occurrences around lines 110 and 164, and normalize list indentation to comply
with MD007 by converting top-level list items from 4 spaces to 2 spaces and
nested list items from 6 spaces to 4 spaces throughout the schema block (apply
this systematically to all nested lists in the section so top-level bullets use
2-space indent and sub-bullets use 4-space indent).
| - Specifications must be business-oriented, precise, and technically actionable for all stakeholders. | ||
| - Place detailed domain or business information as [PLACEHOLDER] if not provided. | ||
| - If information is missing or unclear, state assumptions or ask for clarifications before proceeding. | ||
| - Always use explicit markdown formatting as described under Output Format. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Capitalize "Markdown" in line 164.
Line 164 reads "Always use explicit markdown formatting..." but should be "Always use explicit Markdown formatting..." to reflect the proper noun.
Apply this diff:
- Always use explicit markdown formatting as described under Output Format.
+ Always use explicit Markdown formatting as described under Output Format.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - Always use explicit markdown formatting as described under Output Format. | |
| - Always use explicit Markdown formatting as described under Output Format. |
🧰 Tools
🪛 LanguageTool
[uncategorized] ~164-~164: Did you mean the formatting language “Markdown” (= proper noun)?
Context: ...efore proceeding. - Always use explicit markdown formatting as described under Output Fo...
(MARKDOWN_NNP)
🤖 Prompt for AI Agents
.github/prompts/usecases-gherkin-specs.prompt.md around line 164: change the
lowercase word "markdown" to the capitalized "Markdown" so the sentence reads
"Always use explicit Markdown formatting as described under Output Format.";
update that single word in the line and save the file.
| @@ -0,0 +1 @@ | |||
| {} No newline at end of file | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
Empty settings file serves no purpose; either populate with configuration or remove.
The file contains an empty JSON object and provides no actual VS Code workspace configuration. For a .Net 10 upgrade, consider whether this file should:
- Enforce specific editor settings (e.g., formatting, language version, build configuration)
- Configure recommended extensions for .Net 10 development
- Set up linting or code analysis tools
If no specific configuration is needed, remove this file to keep the repository clean.
🏁 Script executed:
#!/bin/bash
# Check git status and history of the .vscode/settings.json file
echo "=== Git status of .vscode/settings.json ==="
git status .vscode/settings.json 2>&1 || echo "File not tracked or error occurred"
echo -e "\n=== Git log for .vscode/settings.json ==="
git log --oneline -n 20 .vscode/settings.json 2>&1 || echo "No git history available"
echo -e "\n=== Check if .vscode directory exists and list contents ==="
if [ -d ".vscode" ]; then
ls -la .vscode/
else
echo ".vscode directory does not exist"
fi
echo -e "\n=== Search for other configuration files ==="
find . -name "*.json" -type f | grep -E "\.(vscode|editorconfig|eslint)" | head -20
echo -e "\n=== Check for .editorconfig ==="
[ -f ".editorconfig" ] && echo ".editorconfig exists" || echo ".editorconfig not found"
echo -e "\n=== Search README files for VS Code or .Net 10 references ==="
find . -maxdepth 2 -name "README*" -type f -exec grep -l "vscode\|\.Net\|dotnet" {} \; 2>/dev/null || echo "No matches found"
echo -e "\n=== Check current .vscode/settings.json content ==="
cat .vscode/settings.json 2>&1Length of output: 894
🏁 Script executed:
#!/bin/bash
# Get content of related configuration files for context
echo "=== .vscode/launch.json content ==="
cat .vscode/launch.json 2>&1 | head -50
echo -e "\n=== .editorconfig content ==="
cat .editorconfig 2>&1
echo -e "\n=== Check git diff of the current branch to see recent changes ==="
git diff HEAD~5 --name-only 2>&1 | grep -E "vscode|settings|editorconfig" || echo "No relevant files in recent diffs"
echo -e "\n=== Check if settings.json was added in this PR ==="
git log --diff-filter=A --find-object=.vscode/settings.json 2>&1 || git show HEAD:.vscode/settings.json 2>&1 | head -5Length of output: 12281
Remove empty settings file or populate with meaningful workspace configuration.
The .vscode/settings.json file contains only an empty JSON object {} and provides no VS Code workspace configuration. With .editorconfig already handling comprehensive code style settings for the C# project and .vscode/launch.json providing debug configurations, the empty settings.json adds no value.
Either remove the file to keep the repository clean, or populate it with workspace-specific settings if needed (e.g., editor preferences, extension configurations, or build environment settings for .Net 10 development).
🤖 Prompt for AI Agents
.vscode/settings.json lines 1-1: the file contains only an empty JSON object and
adds no value to the repo; either delete the file to keep the repository clean
or replace it with meaningful workspace settings (for example
editor.formatOnSave, files.exclude, [csharp] editor preferences, omnisharp or
dotnet SDK settings, or any team-specific extension configs) appropriate for
this C#/.NET 10 project—pick one of these actions and commit the change.
| **Option A: Archive (Recommended for safety)** | ||
| 1. Go to **Repos** → **Files** in Azure DevOps | ||
| 2. Click repository name dropdown | ||
| 3. Select **Manage repositories** | ||
| 4. Find your repository | ||
| 5. Mark as **Read-only** or add a notice in the README | ||
|
|
||
| **Option B: Complete Deletion (Use with caution)** | ||
| 1. Go to **Project Settings** → **Repositories** | ||
| 2. Select the repository | ||
| 3. Click **Delete** | ||
| 4. Type the repository name to confirm | ||
| 5. Click **Delete** |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion | 🟠 Major
Use proper markdown headings instead of bold text for options.
Lines 270 and 277 use emphasis (**...**) for subsection headers, which violates markdown best practices. These should be converted to heading level 4 (####).
-**Option A: Archive (Recommended for safety)**
+#### Option A: Archive (Recommended for safety)And similarly:
-**Option B: Complete Deletion (Use with caution)**
+#### Option B: Complete Deletion (Use with caution)📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| **Option A: Archive (Recommended for safety)** | |
| 1. Go to **Repos** → **Files** in Azure DevOps | |
| 2. Click repository name dropdown | |
| 3. Select **Manage repositories** | |
| 4. Find your repository | |
| 5. Mark as **Read-only** or add a notice in the README | |
| **Option B: Complete Deletion (Use with caution)** | |
| 1. Go to **Project Settings** → **Repositories** | |
| 2. Select the repository | |
| 3. Click **Delete** | |
| 4. Type the repository name to confirm | |
| 5. Click **Delete** | |
| #### Option A: Archive (Recommended for safety) | |
| 1. Go to **Repos** → **Files** in Azure DevOps | |
| 2. Click repository name dropdown | |
| 3. Select **Manage repositories** | |
| 4. Find your repository | |
| 5. Mark as **Read-only** or add a notice in the README | |
| #### Option B: Complete Deletion (Use with caution) | |
| 1. Go to **Project Settings** → **Repositories** | |
| 2. Select the repository | |
| 3. Click **Delete** | |
| 4. Type the repository name to confirm | |
| 5. Click **Delete** |
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)
270-270: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
277-277: Emphasis used instead of a heading
(MD036, no-emphasis-as-heading)
🤖 Prompt for AI Agents
MIGRATION_GUIDE.md around lines 270 to 282: the option titles are currently
using bold emphasis (e.g., "**Option A: Archive (Recommended for safety)**")
instead of markdown headings; replace those bolded lines with level-4 headings
(prefix with "#### ") for both Option A and Option B (lines ~270 and ~277),
preserve the subtitle text and following numbered steps, ensure a blank line
before and after each heading for proper markdown rendering, and update any
similar subsection titles nearby to use consistent heading syntax.
| ``` | ||
| feature/development/dotnet10 branch | ||
| ↓ (local development) | ||
| (commit & push) → No CI build | ||
| ↓ | ||
| (create PR to main) → PR Validation Build (ACC, preview package) | ||
| ↓ | ||
| (PR approved & merged) → CI Build (PROD, release package to NuGet) | ||
| ``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion | 🟠 Major
Specify language identifier for the fenced code block.
Line 346 opens a fenced code block without a language identifier. Add text or shell to aid syntax highlighting and meet markdown standards.
-\`\`\`
+\`\`\`text
feature/development/dotnet10 branch
↓ (local development)
(commit & push) → No CI build
@@ -351,7 +351,7 @@ feature/development/dotnet10 branch
(PR approved & merged) → CI Build (PROD, release package to NuGet)
-\`\`\`
+\`\`\`🧰 Tools
🪛 markdownlint-cli2 (0.18.1)
346-346: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
MIGRATION_GUIDE.md lines 346-354: the fenced code block is missing a language
identifier; update the opening triple backticks to include a language such as
"text" or "shell" (e.g. ```text) so the block is properly identified for syntax
highlighting and markdown linters, leaving the block contents unchanged.
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
…remove unsubstantiated claims.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
.github/copilot-instructions.md(1 hunks)
🧰 Additional context used
🪛 LanguageTool
.github/copilot-instructions.md
[grammar] ~3-~3: Ensure spelling is correct
Context: ...b Copilot Instructions ## Architecture Overview This repository implements a modern .NET...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~7-~7: Ensure spelling is correct
Context: ...rict separation of concerns: ### Layer Responsibilities - Domain: Core business entities, value...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~19-~19: Ensure spelling is correct
Context: ...ss - XUnit and Reqnroll.NET for testing - Structured logging with ILogger<T> ...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~23-~23: Ensure spelling is correct
Context: ...lity Segregation) for application logic organization - Domain-Driven Design with rich domain...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~40-~40: Ensure spelling is correct
Context: ...tion, Interface Segregation, Dependency Inversion - Clean Code: Readable, maintainable, s...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~42-~42: Ensure spelling is correct
Context: ...on-bodied members, pure functions where applicable - Modern C# Features: Records, pattern ...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~45-~45: Ensure spelling is correct
Context: ... using statements ### Error Handling & Resilience - Result and Option types for...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~46-~46: Ensure spelling is correct
Context: ...es for explicit error handling and null safety - Guard clauses for all public methods ...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~47-~47: Ensure spelling is correct
Context: ...public methods with comprehensive input validation - Structured logging with appropriate l...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~52-~52: Ensure spelling is correct
Context: ...iness rule violations ### Asynchronous Programming - Async/await best practices with `Canc...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~53-~53: Ensure spelling is correct
Context: ...best practices with CancellationToken support - Avoid async void except for event hand...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~58-~58: Ensure spelling is correct
Context: ...es with using statements ### Testing Strategy - Test-Driven Development (TDD) and **B...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~60-~60: Ensure spelling is correct
Context: ...r all business logic with comprehensive coverage - Integration tests for API endpoints a...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~65-~65: Ensure spelling is correct
Context: ...al dependencies ## Code Organization & Structure ### Project Layout ``` Solution/ ├── Domain...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~67-~67: Ensure spelling is correct
Context: ...e Organization & Structure ### Project Layout Solution/ ├── Domain/ # Core business logic ├── Application/ # Use cases and application services │ └── Features/ # Vertical slices by feature │ └── [Entity]/ │ ├── Commands/ │ ├── Queries/ │ └── Events/ ├── Infrastructure/ # External service implementations └── Presentation/ # Web API and UI concerns ### Naming Conventions - Commands: End ...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~91-~91: Ensure spelling is correct
Context: ...diatR**: Implement custom command/query dispatching - AutoMapper: Use manual mapping with e...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~96-~96: Ensure spelling is correct
Context: ... Bus**: Manual implementation in shared kernel - Object Mapping: Explicit mapping meth...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~97-~97: Ensure spelling is correct
Context: ...apping**: Explicit mapping methods with validation - Domain Events: Custom event publishin...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~98-~98: Ensure spelling is correct
Context: ...omain Events**: Custom event publishing mechanism ## Code Generation Requirements ### Outpu...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~105-~105: Ensure spelling is correct
Context: ... Clearly indicate target layer and file location - Documentation: Include XML documentat...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~107-~107: Ensure spelling is correct
Context: ...ing**: Provide unit test examples where applicable ### Quality Assurance - Follow established ...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~109-~109: Ensure spelling is correct
Context: ... examples where applicable ### Quality Assurance - Follow established patterns from the exi...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~110-~110: Ensure spelling is correct
Context: ... established patterns from the existing codebase - Maintain consistency with naming convent...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~114-~114: Ensure spelling is correct
Context: ...r performance implications and resource management ## Reference Guidelines For detailed impl...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~121-~121: Ensure spelling is correct
Context: ...guidelines.md)**: Command/Query pattern implementation - **[SOLID Guidelines](copilot-solid-guideli...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~125-~125: Ensure spelling is correct
Context: ...tructured logging in C# ## Code Review Criteria Generated code will be evaluated against...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~130-~130: Ensure spelling is correct
Context: ...ation of concerns - Testability and maintainability - Performance and resource efficiency -...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
[grammar] ~131-~131: Ensure spelling is correct
Context: ...nability - Performance and resource efficiency - Security considerations and best prac...
(QB_NEW_EN_ORTHOGRAPHY_ERROR_IDS_1)
🪛 markdownlint-cli2 (0.18.1)
.github/copilot-instructions.md
68-68: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: I-Synergy.Framework PR (Build Build, test and pack assemblies)
🔇 Additional comments (1)
.github/copilot-instructions.md (1)
5-5: Clarify .NET version references for .NET 10 upgrade.The file extensively references ".NET8" and "C#13" (lines 5, 16), but this PR is titled "Upgrade to .NET 10". Please confirm whether these version references should be updated to ".NET 10" and "C#14" as part of this upgrade, or if this document intentionally documents the legacy .NET8 guidance.
Also applies to: 16-16
| ``` | ||
| Solution/ | ||
| ├── Domain/ # Core business logic | ||
| ├── Application/ # Use cases and application services | ||
| │ └── Features/ # Vertical slices by feature | ||
| │ └── [Entity]/ | ||
| │ ├── Commands/ | ||
| │ ├── Queries/ | ||
| │ └── Events/ | ||
| ├── Infrastructure/ # External service implementations | ||
| └── Presentation/ # Web API and UI concerns | ||
| ``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Add language identifier to fenced code block.
Fenced code blocks should specify a language for proper syntax highlighting and linting. The project layout block is in Markdown format.
Apply this diff to add the language identifier:
### Project Layout
-```
+```markdown
Solution/
├── Domain/ # Core business logic🧰 Tools
🪛 markdownlint-cli2 (0.18.1)
68-68: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
.github/copilot-instructions.md around lines 68 to 79: the fenced code block
showing the project layout lacks a language identifier; update the opening fence
to include "markdown" (i.e., change ``` to ```markdown) so the block is marked
as Markdown for proper syntax highlighting and linting.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
♻️ Duplicate comments (5)
.github/prompts/prompt-builder.prompt.md (2)
29-32: Fix Markdown list indentation (MD007).Lines 29–32 use 4-space indentation for sub-list items, but the Markdown standard (and linting rule MD007) expects 2-space indentation. Adjust these bullet points to align with the convention used elsewhere in the file.
Apply this diff to fix the indentation:
### 2. **Persona Definition** - What role/expertise should Copilot embody? Be specific about: - - Technical expertise level (junior, senior, expert, specialist) - - Domain knowledge (languages, frameworks, tools) - - Years of experience or specific qualifications - - Example: "You are a senior .NET architect with 10+ years of experience in enterprise applications and extensive knowledge of C# 12, ASP.NET Core, and clean architecture patterns" + - Technical expertise level (junior, senior, expert, specialist) + - Domain knowledge (languages, frameworks, tools) + - Years of experience or specific qualifications + - Example: "You are a senior .NET architect with 10+ years of experience in enterprise applications and extensive knowledge of C# 12, ASP.NET Core, and clean architecture patterns"
55-55: Capitalize "Markdown" as a proper noun.Line 55 uses lowercase "markdown", but as a formal language name it should be capitalized: "Markdown".
Apply this diff:
-- What format should the output be? (code, markdown, JSON, structured data, etc.) +- What format should the output be? (code, Markdown, JSON, structured data, etc.).github/docs/AUTHENTICATION_LEGACY_MESSAGE_REMOVAL.md (1)
90-90: Fix compound modifier hyphenation.This issue was flagged in a prior review and remains unaddressed. When "message handling" modifies "code" as a compound modifier, it requires a hyphen.
-? **Cleaner Code**: Removed 50+ lines of message handling code +? **Cleaner Code**: Removed 50+ lines of message-handling code.github/prompts/iso-5055-quality-enforcer.prompt.md (2)
45-45: Fix markdown emphasis formatting (MD037).Line 45 contains spaces inside emphasis markers. Remove spaces between asterisks and text to comply with markdown linting standards.
Apply this fix:
-RiskScore = round( (severityFactor * pillarWeight * exploitabilityFactor) + (complexityReductionFactor * 0.5), 1 ) +RiskScore = round( (severityFactor *pillarWeight* exploitabilityFactor) + (complexityReductionFactor * 0.5), 1 )
88-88: Specify language for fenced code block (MD040).Line 88 opens a code block without a language specifier. Add a language identifier (e.g.,
```json) for proper syntax highlighting and linting compliance.Apply this fix:
-``` +```json
🧹 Nitpick comments (10)
.github/prompts/update-markdown-file-index.prompt.md (1)
17-17: Standardize capitalization of "Markdown" as proper noun.The static analysis tool flagged inconsistent capitalization. "Markdown" should be capitalized on lines 17, 57, and 76 to align with proper noun conventions for the formatting language.
Apply this diff:
- 6. **Validate**: Ensure markdown syntax is valid and formatting is consi... + 6. **Validate**: Ensure Markdown syntax is valid and formatting is consi...- 📋 **Preserve**: Maintain existing markdown formatting, heading levels, and documen... + 📋 **Preserve**: Maintain existing Markdown formatting, heading levels, and documen...- - Validate all generated markdown syntax + - Validate all generated Markdown syntaxAlso applies to: 57-57, 76-76
.github/prompts/create-implementation-plan.prompt.md (1)
64-66: Fix compound adjective formatting.The static analysis tool flagged a grammar issue: "bright green badge" should use a hyphen to form a compound adjective modifying the noun.
Apply this diff to improve grammar:
- The status of the implementation plan must be clearly defined in the front matter and must reflect the current state of the plan. The status can be one of the following (status_color in brackets): `Completed` (bright green badge), `In progress` (yellow badge), `Planned` (blue badge), `Deprecated` (red badge), or `On Hold` (orange badge). It should also be displayed as a badge in the introduction section. + The status of the implementation plan must be clearly defined in the front matter and must reflect the current state of the plan. The status can be one of the following (status_color in brackets): `Completed` (bright-green badge), `In progress` (yellow badge), `Planned` (blue badge), `Deprecated` (red badge), or `On Hold` (orange badge). It should also be displayed as a badge in the introduction section..github/prompts/csharp-xunit.prompt.md (1)
1-69: Well-structured and comprehensive xUnit best practices guide.The documentation accurately covers essential xUnit testing patterns, including project setup, AAA structure, data-driven testing, assertions, and test organization. The guidance is practical and aligns with xUnit conventions.
Minor enhancement: consider adding guidance on async testing patterns.
Given modern C# async/await prevalence, it may be worth adding a brief section on async test patterns (e.g.,
async Taskmethods,await Assert.ThrowsAsync<T>). This would make the guide more complete for contemporary development.If you'd like to include this, consider adding an "Async Tests" section after "Standard Tests" covering:
- Using
async Taskfor async test methodsawait Assert.ThrowsAsync<T>for exception testing in async code- Best practices for async setup/teardown with
IAsyncLifetime.github/prompts/csharp-docs.prompt.md (1)
11-26: Reduce repetitive sentence structure for better readability.Lines 11–26 consistently begin with "Use" (or inherit that pattern), creating monotonous structure. While this aids scannability, the repetition violates prose style guidelines flagged by LanguageTool.
Consider varying the sentence openings to improve prose flow—for example, use gerunds ("Documenting with
<summary>..."), embedded clauses, or object-subject order in some lines.Here's an example refactor that maintains clarity while varying structure:
- Use `<summary>` for method descriptions. This should be a brief overview of what the method does. - Use `<param>` for method parameters. - Use `<paramref>` to reference parameters in documentation. - Use `<returns>` for method return values. - Use `<remarks>` for additional information, which can include implementation details, usage notes, or any other relevant context. - Use `<example>` for usage examples on how to use the member. - Use `<exception>` to document exceptions thrown by methods. - Use `<see langword>` for language-specific keywords like `null`, `true`, `false`, `int`, `bool`, etc. - Use `<see cref>` to reference other types or members inline (in a sentence). - Use `<seealso>` for standalone (not in a sentence) references to other types or members in the "See also" section of the online docs. - Use `<inheritdoc/>` to inherit documentation from base classes or interfaces. + Document method descriptions with `<summary>` — a brief overview of what the method does. + Use `<param>` for method parameters, and `<paramref>` to reference them in documentation. + Use `<returns>` for method return values and `<remarks>` for additional information (implementation details, usage notes, context). + Use `<example>` to demonstrate member usage, and `<exception>` to document thrown exceptions. + Use `<see langword>` for language-specific keywords (`null`, `true`, `false`, `int`, `bool`, etc.) and `<see cref>` to reference other types or members inline. + Reference types or members in standalone sections (the "See also" area of online docs) using `<seealso>`. + Inherit documentation from base classes or interfaces with `<inheritdoc/>`.This consolidation also reduces the line count while preserving all guidance.
.github/prompts/csharp-async.prompt.md (2)
23-28: Minor enhancement: Clarify exception handling patterns further.The guidance is accurate, though line 28 (
Task.FromException()) is a more specialized pattern. Consider adding clarification that most async methods should use straightforward throw/try-catch, and thatTask.FromException()is for cases where you need to return an already-faulted task (less common in typical flows).## Exception Handling - Use try/catch blocks around await expressions - Avoid swallowing exceptions in async methods - Use `ConfigureAwait(false)` when appropriate to prevent deadlocks in library code -- Propagate exceptions with `Task.FromException()` instead of throwing in async Task returning methods +- For most async methods, exceptions propagate naturally; use `Task.FromException()` only when explicitly constructing a faulted task
37-42: Optional addition: Fire-and-forget pattern warning.Consider adding a note about fire-and-forget async calls. Line 42 says "always await Task-returning methods," but legitimate fire-and-forget patterns exist (e.g., event handlers, background work). A brief note distinguishing when fire-and-forget is acceptable would enhance the guidance.
## Common Pitfalls - Never use `.Wait()`, `.Result`, or `.GetAwaiter().GetResult()` in async code - Avoid mixing blocking and async code - Don't create async void methods (except for event handlers) - Always await Task-returning methods +- If using fire-and-forget patterns, ensure proper error handling (e.g., capture exceptions internally or log them).github/prompts/create-unittest.prompt.md (2)
11-16: Specify MSTest package names for clarity.Line 14 advises to "Reference MSTest package" but doesn't specify which packages. For .NET 10 projects, recommend explicitly listing:
Microsoft.VisualStudio.TestPlatform.TestFramework(main testing framework)Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions(optional, for advanced features)MSTest.TestAdapterandMSTest.TestFramework(modern NuGet packages for recent .NET versions)This clarity helps developers choose the correct modern packages and avoid deprecated versions.
37-43: Add guidance on choosing between DataRow and DynamicData.The Data-Driven Tests section lists both
[DataRow]and[DynamicData]but doesn't guide when to prefer one over the other. Consider adding:
- Use
[DataRow]for small, fixed datasets defined at authoring time.- Use
[DynamicData]for large or dynamically computed datasets, or when test data comes from external sources.This helps developers make appropriate architectural choices for their test scenarios.
.github/docs/AUTHENTICATION_LEGACY_MESSAGE_REMOVAL.md (2)
62-71: Specify language for all fenced code blocks.Fenced code blocks should declare their language to enable syntax highlighting and improve readability. The following code blocks are missing language tags:
- Line 62: Change
```to```textor```yaml- Line 75: Change
```to```text- Line 99: Change
```to```text- Lines 128–141, 144–157, 164–187: Change
```to```csharp(C# code)- Line 284: Change
```to```textor```diffExample fix for lines 128–141:
-### Old (Message-Based) ? -```csharp +### Old (Message-Based) ? +```csharpAlso applies to: 75-85, 99-114, 128-141, 144-157, 164-187, 284-295
226-238: Performance section appropriately qualified but could benefit from concrete context.The prior review flagged the unsupported "1000x+ faster" claim. You've addressed this by softening the language to "significantly faster" and noting that actual improvement depends on application-specific factors (line 238). This is a reasonable approach. However, the section could be even clearer by providing context about when this matters or removing quantitative claims altogether.
Consider tightening line 233–236 to focus on architectural benefits rather than performance: "Event invocation through direct delegate calls eliminates the overhead of message object allocation and routing infrastructure." This removes the implication of a specific speed multiplier without requiring benchmarks.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (15)
-
.github/docs/AUTHENTICATION_LEGACY_MESSAGE_REMOVAL.md(1 hunks) -
.github/prompts/architectural-code-review-modernize.prompt.md(1 hunks) -
.github/prompts/aspnet-minimal-api-openapi.prompt.md(1 hunks) -
.github/prompts/create-implementation-plan.prompt.md(1 hunks) -
.github/prompts/create-unittest.prompt.md(1 hunks) -
.github/prompts/csharp-async.prompt.md(1 hunks) -
.github/prompts/csharp-docs.prompt.md(1 hunks) -
.github/prompts/csharp-xunit.prompt.md(1 hunks) -
.github/prompts/documentation-writer.prompt.md(1 hunks) -
.github/prompts/ef-core.prompt.md(1 hunks) -
.github/prompts/iso-5055-quality-enforcer.prompt.md(1 hunks) -
.github/prompts/postgresql-optimization.prompt.md(1 hunks) -
.github/prompts/prompt-builder.prompt.md(1 hunks) -
.github/prompts/update-markdown-file-index.prompt.md(1 hunks) -
.gitignore(2 hunks)
✅ Files skipped from review due to trivial changes (2)
- .gitignore
- .github/prompts/ef-core.prompt.md
🚧 Files skipped from review as they are similar to previous changes (1)
- .github/prompts/aspnet-minimal-api-openapi.prompt.md
🧰 Additional context used
🪛 LanguageTool
.github/prompts/iso-5055-quality-enforcer.prompt.md
[grammar] ~9-~9: Interpunctie toevoegen
Context: ... specialist met 12+ jaar enterprise .NET ervaring (C# 12 / .NET 8), grondige kenn...
(QB_NEW_NL_OTHER_ERROR_IDS_MISSING_PUNCTUATION)
[grammar] ~12-~12: Fout gevonden
Context: ...alyseer geselecteerde (of anders huidige / aanvullende) broncode op ISO 5055 zwak...
(QB_NEW_NL_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_SPELLING)
[grammar] ~12-~12: Fout gevonden
Context: ...yseer geselecteerde (of anders huidige / aanvullende) broncode op ISO 5055 zwakheden en geef...
(QB_NEW_NL_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_SPELLING)
[grammar] ~12-~12: Interpunctie toevoegen
Context: ...dige / aanvullende) broncode op ISO 5055 zwakheden en geef gestructureerde verbet...
(QB_NEW_NL_OTHER_ERROR_IDS_MISSING_PUNCTUATION)
[grammar] ~14-~14: Interpunctie toevoegen
Context: ... Detecteer kwetsbaarheden: onveilige API calls, input validatie/ontbreken, hardco...
(QB_NEW_NL_OTHER_ERROR_IDS_MISSING_PUNCTUATION)
[grammar] ~14-~14:
Context: ...er kwetsbaarheden: onveilige API calls, input validatie/ontbreken, hardcoded secrets/credential...
(QB_NEW_NL_OTHER_ERROR_IDS_UNNECESSARY_ORTHOGRAPHY_SPACE)
[grammar] ~16-~16: Interpunctie toevoegen
Context: ...ct type/arithm. conversies - Performance inefficiënties: N+1 / overmatige data ca...
(QB_NEW_NL_OTHER_ERROR_IDS_MISSING_PUNCTUATION)
[grammar] ~16-~16:
Context: ...rmance inefficiënties: N+1 / overmatige data calls, onnodige loops, blocking sync IO / ont...
(QB_NEW_NL_OTHER_ERROR_IDS_UNNECESSARY_ORTHOGRAPHY_SPACE)
[grammar] ~16-~16:
Context: ...ntbrekende timeouts, inefficiënte string / alloc patronen - Maintainability: comp...
(QB_NEW_NL_OTHER_ERROR_IDS_UNNECESSARY_ORTHOGRAPHY_SPACE)
[grammar] ~16-~16:
Context: ...brekende timeouts, inefficiënte string / alloc patronen - Maintainability: complexiteit, duplic...
(QB_NEW_NL_OTHER_ERROR_IDS_UNNECESSARY_ORTHOGRAPHY_SPACE)
[grammar] ~18-~18:
Context: ... Quick-fixes en prioritering met impact/risico score - Optioneel test skeletons voor high-ri...
(QB_NEW_NL_OTHER_ERROR_IDS_UNNECESSARY_ORTHOGRAPHY_SPACE)
[grammar] ~19-~19:
Context: ...ing met impact/risico score - Optioneel test skeletons voor high-risk refactors (C# xUnit) - A...
(QB_NEW_NL_OTHER_ERROR_IDS_UNNECESSARY_ORTHOGRAPHY_SPACE)
[grammar] ~20-~20:
Context: ...ctors (C# xUnit) - Aggregated metrics & effort inschatting Ondersteunde talen: C#, TypeScript, SQL ...
(QB_NEW_NL_OTHER_ERROR_IDS_UNNECESSARY_ORTHOGRAPHY_SPACE)
[grammar] ~22-~22:
Context: ... C# .NET 8). Multi-bestand en cross-file analyse (max 40 relevante bestanden auto...
(QB_NEW_NL_OTHER_ERROR_IDS_UNNECESSARY_ORTHOGRAPHY_SPACE)
[grammar] ~22-~22: Interpunctie toevoegen
Context: ...8). Multi-bestand en cross-file analyse (max 40 relevante bestanden automatisch, heu...
(QB_NEW_NL_OTHER_ERROR_IDS_MISSING_PUNCTUATION)
[grammar] ~36-~36: Fout gevonden
Context: ...th) - ${input:riskModel:iso5055-v1} - ${input:maxRefactorDiffLines:400} - ${input:languageScope:csharp,typescript,sql} ### Automatische contextverzameling 1. Indie...
(QB_NEW_NL_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_SPELLING)
[grammar] ~42-~42: Interpunctie toevoegen
Context: ...cess, concurrency). 3. Cross-file: zoek (max 40) aanvullende bestanden voor symbol d...
(QB_NEW_NL_OTHER_ERROR_IDS_MISSING_PUNCTUATION)
[grammar] ~42-~42: Fout gevonden
Context: ...oek (max 40) aanvullende bestanden voor symbol definities, duplicatie (?6 identieke of...
(QB_NEW_NL_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_SPELLING)
[grammar] ~53-~53: Interpunctie toevoegen
Context: ...- ISO 5055 4 pilaren en bijbehorende CWE gerelateerde patronen - Clean Architectu...
(QB_NEW_NL_OTHER_ERROR_IDS_MISSING_PUNCTUATION)
[grammar] ~56-~56:
Context: ...:maxComplexity} - Geen hardcoded secrets / credentials / keys / connection string...
(QB_NEW_NL_OTHER_ERROR_IDS_UNNECESSARY_ORTHOGRAPHY_SPACE)
[grammar] ~56-~56:
Context: ...axComplexity} - Geen hardcoded secrets / credentials / keys / connection strings ...
(QB_NEW_NL_OTHER_ERROR_IDS_UNNECESSARY_ORTHOGRAPHY_SPACE)
[grammar] ~56-~56:
Context: ...} - Geen hardcoded secrets / credentials / keys / connection strings - Asynchrono...
(QB_NEW_NL_OTHER_ERROR_IDS_UNNECESSARY_ORTHOGRAPHY_SPACE)
[grammar] ~56-~56:
Context: ...- Geen hardcoded secrets / credentials / keys / connection strings - Asynchronous...
(QB_NEW_NL_OTHER_ERROR_IDS_UNNECESSARY_ORTHOGRAPHY_SPACE)
[grammar] ~56-~56:
Context: ...n hardcoded secrets / credentials / keys / connection strings - Asynchronous best...
(QB_NEW_NL_OTHER_ERROR_IDS_UNNECESSARY_ORTHOGRAPHY_SPACE)
[grammar] ~56-~56:
Context: ...hardcoded secrets / credentials / keys / connection strings - Asynchronous best p...
(QB_NEW_NL_OTHER_ERROR_IDS_UNNECESSARY_ORTHOGRAPHY_SPACE)
[grammar] ~57-~57: Interpunctie toevoegen
Context: ...ces (geen sync over async, geen blocking .Result/.Wait()) - Resource & error hand...
(QB_NEW_NL_OTHER_ERROR_IDS_MISSING_PUNCTUATION)
[grammar] ~57-~57: Woord toevoegen
Context: ...er async, geen blocking .Result/.Wait()) - Resource & error handling: altijd dispose / awai...
(QB_NEW_NL_OTHER_ERROR_IDS_MISSING_CONTRACTION)
[grammar] ~60-~60:
Context: ... 5 / parameters > 7 - Geen inefficiënte string concatenatie in loops (gebruik StringBuilder / inter...
(QB_NEW_NL_OTHER_ERROR_IDS_UNNECESSARY_ORTHOGRAPHY_SPACE)
[grammar] ~65-~65: Fout gevonden
Context: ...*** ## Detectie Heuristieken (pre-scan) - Duplicate code: ?6 opeenvolgende gelijke...
(QB_NEW_NL_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_SPELLING)
[grammar] ~66-~66: Fout gevonden
Context: ...lijkende regels (normaliseer whitespace) - Async/sync misbruik: sync over async, Ta...
(QB_NEW_NL_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_SPELLING)
[grammar] ~68-~68: Interpunctie toevoegen
Context: ...lt, Thread.Sleep in async context - LINQ inefficiënties: ToList() vroegtijdig, ne...
(QB_NEW_NL_OTHER_ERROR_IDS_MISSING_PUNCTUATION)
[grammar] ~79-~79: Interpunctie toevoegen
Context: ...Table (compact) 4. Detailed Fixes (ISSUE blokken) 5. Refactored Snippets (gecombi...
(QB_NEW_NL_OTHER_ERROR_IDS_MISSING_PUNCTUATION)
[grammar] ~125-~125: Taalfout gevonden
Context: ...dationType": "sanitize", "fixType": "refactor", "diffPreview": "@@ ..." } ] Filter uit op basis van ${input:s...
(QB_NEW_NL_OTHER_ERROR_IDS_REPLACEMENT_OTHER)
[grammar] ~133-~133: Taalfout gevonden
Context: ...ering. Bewaak semantische equivalentie (except security/perf verbeteringen). Redigeer ...
(QB_NEW_NL_OTHER_ERROR_IDS_REPLACEMENT_OTHER)
[grammar] ~133-~133: Taalfout gevonden
Context: ...ische equivalentie (except security/perf verbeteringen). Redigeer secrets. ## Te...
(QB_NEW_NL_OTHER_ERROR_IDS_REPLACEMENT_OTHER)
[grammar] ~137-~137: Interpunctie toevoegen
Context: ...isk (RiskScore >= 5.0) refactors - xUnit stijl; Arrange / Act / Assert; focus op ...
(QB_NEW_NL_OTHER_ERROR_IDS_MISSING_PUNCTUATION)
[grammar] ~142-~142:
Context: ... gebruiker om code te selecteren - Parse / compile fouten aan begin: sectie VALID...
(QB_NEW_NL_OTHER_ERROR_IDS_UNNECESSARY_ORTHOGRAPHY_SPACE)
[grammar] ~142-~142:
Context: ...ebruiker om code te selecteren - Parse / compile fouten aan begin: sectie VALIDAT...
(QB_NEW_NL_OTHER_ERROR_IDS_UNNECESSARY_ORTHOGRAPHY_SPACE)
[grammar] ~142-~142:
Context: ... om code te selecteren - Parse / compile fouten aan begin: sectie VALIDATION_ERRO...
(QB_NEW_NL_OTHER_ERROR_IDS_UNNECESSARY_ORTHOGRAPHY_SPACE)
[grammar] ~146-~146: Fout gevonden
Context: ...ove threshold" ## Werkwijze (Stap-voor-Stap) 1. Context Bepalen: lees ${selection} ...
(QB_NEW_NL_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_OTHERCASE)
[grammar] ~148-~148: Fout gevonden
Context: ... queries). 2. Verzamel Cross-File Data: symbol definities, referenties, duplicatie, fa...
(QB_NEW_NL_OTHER_ERROR_IDS_REPLACEMENT_ORTHOGRAPHY_SPELLING)
[grammar] ~150-~150: Interpunctie toevoegen
Context: ...ess Detectie: map patronen naar ISO 5055 pilaren & CWE codes. Normaliseer false p...
(QB_NEW_NL_OTHER_ERROR_IDS_MISSING_PUNCTUATION)
[grammar] ~150-~150: Interpunctie toevoegen
Context: ...map patronen naar ISO 5055 pilaren & CWE codes. Normaliseer false positives (bv. ...
(QB_NEW_NL_OTHER_ERROR_IDS_MISSING_PUNCTUATION)
[grammar] ~153-~153: Interpunctie toevoegen
Context: ...al-invasieve refactors; behoud publieke API tenzij onveilig. 8. Validatie: controle...
(QB_NEW_NL_OTHER_ERROR_IDS_MISSING_PUNCTUATION)
[grammar] ~154-~154: Interpunctie toevoegen
Context: ...ilig. 8. Validatie: controleer dat AFTER code consistent is (namespaces, usings, ...
(QB_NEW_NL_OTHER_ERROR_IDS_MISSING_PUNCTUATION)
[grammar] ~156-~156: Interpunctie toevoegen
Context: ...oza), anders volledige markdown (en JSON sectie indien both). ## Kwaliteits- & V...
(QB_NEW_NL_OTHER_ERROR_IDS_MISSING_PUNCTUATION)
.github/prompts/update-markdown-file-index.prompt.md
[uncategorized] ~17-~17: Did you mean the formatting language “Markdown” (= proper noun)?
Context: ...with file index 6. Validate: Ensure markdown syntax is valid and formatting is consi...
(MARKDOWN_NNP)
[uncategorized] ~57-~57: Did you mean the formatting language “Markdown” (= proper noun)?
Context: ...at - 📋 Preserve: Maintain existing markdown formatting, heading levels, and documen...
(MARKDOWN_NNP)
[uncategorized] ~76-~76: Did you mean the formatting language “Markdown” (= proper noun)?
Context: ...s in filenames - Validate all generated markdown syntax
(MARKDOWN_NNP)
.github/prompts/create-implementation-plan.prompt.md
[uncategorized] ~66-~66: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...status_color in brackets): Completed (bright green badge), In progress (yellow badge), `...
(EN_COMPOUND_ADJECTIVE_INTERNAL)
.github/docs/AUTHENTICATION_LEGACY_MESSAGE_REMOVAL.md
[grammar] ~90-~90: Use a hyphen to join words.
Context: ...ner Code**: Removed 50+ lines of message handling code ? Type Safety: Event...
(QB_NEW_EN_HYPHEN)
.github/prompts/csharp-docs.prompt.md
[style] ~14-~14: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...eference parameters in documentation. - Use <returns> for method return values. -...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~15-~15: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...<returns> for method return values. - Use <remarks> for additional information,...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~16-~16: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...notes, or any other relevant context. - Use <example> for usage examples on how t...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~17-~17: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ge examples on how to use the member. - Use <exception> to document exceptions th...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~18-~18: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...ocument exceptions thrown by methods. - Use <see langword> for language-specific ...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~19-~19: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... true, false, int, bool, etc. - Use <see cref> to reference other types o...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~20-~20: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...es or members inline (in a sentence). - Use <seealso> for standalone (not in a se...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~21-~21: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...See also" section of the online docs. - Use <inheritdoc/> to inherit documentatio...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~25-~25: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...nce type parameters in documentation. - Use <c> for inline code snippets. - Use `...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~26-~26: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...- Use <c> for inline code snippets. - Use <code> for code blocks. <code> tags...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
.github/prompts/prompt-builder.prompt.md
[style] ~9-~9: Consider a different adjective to strengthen your wording.
Context: ... GitHub Copilot prompt development with deep knowledge of: - Prompt engineering best...
(DEEP_PROFOUND)
[uncategorized] ~55-~55: Did you mean the formatting language “Markdown” (= proper noun)?
Context: ...hat format should the output be? (code, markdown, JSON, structured data, etc.) - Should ...
(MARKDOWN_NNP)
🪛 markdownlint-cli2 (0.18.1)
.github/prompts/postgresql-optimization.prompt.md
353-353: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
373-373: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
.github/prompts/iso-5055-quality-enforcer.prompt.md
45-45: Spaces inside emphasis markers
(MD037, no-space-in-emphasis)
45-45: Spaces inside emphasis markers
(MD037, no-space-in-emphasis)
88-88: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
.github/prompts/architectural-code-review-modernize.prompt.md
36-36: Spaces inside emphasis markers
(MD037, no-space-in-emphasis)
222-222: Bare URL used
(MD034, no-bare-urls)
.github/prompts/documentation-writer.prompt.md
45-45: Spaces inside emphasis markers
(MD037, no-space-in-emphasis)
45-45: Spaces inside emphasis markers
(MD037, no-space-in-emphasis)
.github/docs/AUTHENTICATION_LEGACY_MESSAGE_REMOVAL.md
62-62: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
75-75: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
99-99: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
284-284: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: I-Synergy.Framework PR (Build Build, test and pack assemblies)
🔇 Additional comments (17)
.github/prompts/update-markdown-file-index.prompt.md (2)
1-5: YAML frontmatter is well-structured.The mode, description, and tools configuration are clear and comprehensive. The tool list is appropriate for the agent workflow described.
6-76: Excellent prompt documentation—comprehensive and well-organized.The workflow is clearly structured with a logical 6-step process, multiple table format options, and practical guidance on section identification and update strategies. This is a solid addition to the documentation infrastructure for the .Net 10 upgrade.
.github/prompts/create-implementation-plan.prompt.md (1)
1-156: Clear, well-structured prompt template for deterministic implementation planning.The file establishes a comprehensive template for AI-to-AI and AI-to-human implementation planning with explicit validation rules, structured phases, and measurable criteria. The separation of prompt instructions (lines 1–50) from the template itself (lines 51–156) makes it suitable for both agent execution and human reference.
This is infrastructure/tooling that will likely streamline planning for future work items, including coordinating the event-driven and authentication lifecycle refactors mentioned in the PR summary.
.github/prompts/csharp-docs.prompt.md (1)
1-5: YAML front matter is well-formed.The agent configuration is correct and the tools array appropriately scopes this as a documentation guidance resource.
.github/prompts/csharp-async.prompt.md (1)
1-50: Well-structured async best practices guidance.This prompt provides solid, comprehensive guidance for C# async programming covering naming, return types, exception handling, performance, and common pitfalls. The recommendations align with established Microsoft and community best practices and should serve as a useful resource for code review and development guidance.
.github/prompts/create-unittest.prompt.md (2)
1-67: Well-structured MSTest guidance document.The prompt provides comprehensive and well-organized coverage of MSTest best practices, including project setup, test structure (AAA pattern), standard and data-driven tests, assertions, mocking, and test organization. The naming conventions and lifecycle attributes are accurate for MSTest.
45-53: Verify assertion coverage against .NET 10 / latest MSTest versions.The assertions list is solid but may be missing newer or preferred methods introduced in recent MSTest versions. Confirm whether to add or emphasize:
Assert.ThrowsAsync<T>for async exception testingAssert.That(if using alternative assertion libraries like NUnit style)CollectionAssert.AreEquivalent,AreNotEqualvariants- StringAssert variants (
StartsWith,EndsWith,Contains, etc.).github/prompts/documentation-writer.prompt.md (3)
1-5: Tools array corrected to match GitHub Copilot Agents API specification.Good catch on the previous review feedback. The tools array has been updated from the incorrect
['editFiles','search','fetch']to the correct['edit', 'search', 'read'], which aligns with the current GitHub Copilot Agents API.
45-45: Verify markdownlint MD037 warning on line 45.Static analysis flagged a "Spaces inside emphasis markers" (MD037) error on line 45. The line reads:
- DO NOT copy content from them unless I explicitly ask you to.This may be a false positive (or a linting artifact), but please verify the markdown formatting is correct and there are no unintended emphasis-marker spaces. If needed, adjust the emphasis formatting to comply with markdown standards.
7-46: Documentation workflow and Diátaxis framework guidance is well-structured.The file provides clear guidance on the Diátaxis Framework, defines guiding principles effectively, and establishes a logical three-step workflow (Acknowledge & Clarify, Propose Structure, Generate Content) that should help users generate high-quality documentation. Contextual awareness rules and scope boundaries are appropriately defined.
.github/prompts/postgresql-optimization.prompt.md (1)
1-406: Comprehensive PostgreSQL optimization prompt—well-structured and actionable.This documentation file provides a solid foundation for a PostgreSQL optimization assistant, with practical examples covering JSONB, arrays, window functions, full-text search, custom types, and advanced features. The organization is clear, the SQL examples are sound, and the inclusion of anti-patterns (❌ BAD vs ✅ GOOD) and checklists improves usability.
.github/prompts/architectural-code-review-modernize.prompt.md (1)
26-26: ✅ Include glob correctly fixed with proper wildcards.The previous review flagged malformed globs using underscores instead of wildcards for TypeScript and SQL files. This version correctly uses
**/*.ts,**/*.tsx, and**/*.sql, ensuring the agent properly matches all file types across the workspace..github/prompts/iso-5055-quality-enforcer.prompt.md (5)
1-43: Comprehensive ISO 5055 auditing workflow foundation.The prompt header, role definition, goals, and input variables are well-structured and provide clear, configurable guidance for code quality enforcement. Variable defaults (e.g.,
severityThreshold:medium,maxComplexity:15) are sensible, and multi-language support aligns with .NET ecosystem needs.
44-63: Risk scoring model and constraints are well-aligned with ISO 5055 pillars.The risk formula appropriately weighs security (1.0), reliability (0.9), performance (0.7), and maintainability (0.5). Constraints comprehensively cover SOLID principles, async best practices, resource management, and security (no hardcoded secrets, parameterized queries, logging without PII).
65-108: Detection heuristics and output structure are comprehensive and actionable.The heuristics cover common anti-patterns (duplicate code, async/sync misuse, LINQ inefficiencies, N+1 queries, resource leaks, injection vulnerabilities). Output structure is clearly layered: findings table (compact), ISSUE blocks (detailed), JSON schema (machine-readable), with metrics aggregation and optional test skeletons—supporting both human review and CI/CD automation.
109-156: Workflow steps and validation criteria ensure quality, reproducibility, and actionable outputs.The 10-step workflow (context determination through validation rendering) is methodical. JSON schema enables machine-readable integration with CI/CD tooling. Validation criteria prevent low-value diffs, new warnings, and semantic drift. Test skeleton guidance appropriately constrains scope to high-risk C# refactors with standard xUnit patterns. Fallback behavior gracefully handles missing selections and parse errors.
157-180: Common pitfalls and conclusion are clear and actionable.The "pitfalls to avoid" section (over-refactoring, secret leakage, independent-issue mixing, out-of-scope lib additions) provides guardrails. The prompt concludes with a clear call to action—"Ready"—signaling readiness for deployment.
| - Never suggest partial snippets that won’t compile. Provide complete method/class or equivalent unit | ||
| - If context is insufficient, ask precisely for the missing parts (file, method, or interface) | ||
| - Do not break public APIs without a clear, low-risk migration note | ||
| - Enforce package policy: avoid MediatR, AutoMapper, SpecFlow; use xUnit and reqnroll.net. Where mediator/mapper behavior is required, implement it in a shared project or per-slice utility with explicit, testable functions. Reference Microsoft architecture patterns: https://learn.microsoft.com/en-us/azure/architecture/patterns/ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wrap bare URL in angle brackets for proper markdown formatting.
Line 222 contains a bare URL at the end (https://learn.microsoft.com/en-us/azure/architecture/patterns/), which markdown linters flag as MD034. Wrap it in angle brackets or convert to a link.
Apply this diff:
- Enforce package policy: avoid MediatR, AutoMapper, SpecFlow; use xUnit and reqnroll.net. Where mediator/mapper behavior is required, implement it in a shared project or per-slice utility with explicit, testable functions. Reference Microsoft architecture patterns: https://learn.microsoft.com/en-us/azure/architecture/patterns/
+ Enforce package policy: avoid MediatR, AutoMapper, SpecFlow; use xUnit and reqnroll.net. Where mediator/mapper behavior is required, implement it in a shared project or per-slice utility with explicit, testable functions. Reference [Microsoft architecture patterns](https://learn.microsoft.com/en-us/azure/architecture/patterns/).🧰 Tools
🪛 markdownlint-cli2 (0.18.1)
222-222: Bare URL used
(MD034, no-bare-urls)
🤖 Prompt for AI Agents
.github/prompts/architectural-code-review-modernize.prompt.md around line 222:
the bare URL at the end of the line violates MD034; fix by wrapping the URL in
angle brackets (e.g.
<https://learn.microsoft.com/en-us/azure/architecture/patterns/>) or replace it
with a markdown link text pointing to that URL so the line no longer contains a
bare URL.
| ``` | ||
| ## Query Performance Analysis | ||
| **Original Query**: | ||
| [Original SQL with performance issues] | ||
| **Issues Identified**: | ||
| - Sequential scan on large table (Cost: 15000.00) | ||
| - Missing index on frequently queried column | ||
| - Inefficient join order | ||
| **Optimized Query**: | ||
| [Improved SQL with explanations] | ||
| **Recommended Indexes**: | ||
| ```sql | ||
| CREATE INDEX idx_table_column ON table(column); | ||
| ``` | ||
|
|
||
| **Performance Impact**: Expected 80% improvement in execution time | ||
| ``` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Specify language for fenced code blocks.
Lines 353 and 373 contain fenced code blocks without language specifiers. Per markdownlint (MD040), code blocks should include a language identifier for proper syntax highlighting.
Apply these diffs to fix the code blocks:
## 🎯 Optimization Output Format
### Query Analysis Results
-```
+```text
## Query Performance Analysis
**Original Query**: **Performance Impact**: Expected 80% improvement in execution time
-```
+```text
<details>
<summary>🧰 Tools</summary>
<details>
<summary>🪛 markdownlint-cli2 (0.18.1)</summary>
353-353: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
---
373-373: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
</details>
</details>
<details>
<summary>🤖 Prompt for AI Agents</summary>
.github/prompts/postgresql-optimization.prompt.md around lines 353 to 373: two
fenced code blocks are missing language identifiers (MD040); replace the opening
and closing triple-backtick fences at those spots with fences that include a
language identifier (e.g., change totext for the opening fences and
ensure the closing fences remain ```), so both code blocks explicitly specify
"text" as their language.
</details>
<!-- This is an auto-generated comment by CodeRabbit -->
Updated the `System.IdentityModel.Tokens.Jwt` package version in the `Directory.Packages.props` file from `8.14.0` to `8.15.0`. This update may include bug fixes, new features, or performance improvements. No other package versions were modified.
Updated the `NuGetToolInstaller` task in the Azure Pipelines YAML file to use NuGet version 7.0.0 instead of 6.12.2. The `displayName` and `versionSpec` fields were updated accordingly to reflect this change. This ensures compatibility with the latest features and improvements in NuGet 7.0.0.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 1
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
Directory.Packages.props(1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: I-Synergy.Framework PR (Build Build, test and pack assemblies)
🔇 Additional comments (3)
Directory.Packages.props (3)
68-76: No actionable issues found during verification—the telemetry stack and package versions are properly aligned.The OpenTelemetry packages in Directory.Packages.props exhibit appropriate version alignment:
- Core packages (OpenTelemetry, exporters, Extensions.Hosting, AspNetCore, Http, Runtime) are uniformly at 1.14.0 (stable)
- Only two instrumentation packages use betas: EntityFrameworkCore (1.14.0-beta.2) and SqlClient (1.14.0-beta.1)—a minimal, deliberate choice
- Azure.Monitor.OpenTelemetry.Exporter 1.5.0 is compatible with core 1.14.0
- Sentry (5.16.2) and Sentry.OpenTelemetry (5.16.2) are aligned
- No version skew between the exporter pipeline components
Existing telemetry tests already validate this stack: ConfigurationExtensionsTests covers option parsing and TelemetryExporterTests validates Azure Monitor, Sentry, and OTLP exporter initialization. No runtime version incompatibilities, double-export issues, or sampling anomalies are evident in the codebase.
7-12: Validate Azure SDK breaking changes against per-package CHANGELOGs before deploying.The version bumps look consistent and well-aligned with .NET 10, and the move to centralizing packages is good practice. However, recent Azure SDK releases include documented breaking changes (type renames, client factory method reorganization, property name changes, nullable return types, and service API version bumps) that require code review. Broad rename/refactor of types and clients across packages (many classes/props renamed—e.g., Connection → ConnectionProperties, Deployment → AIDeployment, many AI/Index types renamed). Review each package changelog for exact renames.
Additional observations:
- Client factory/locator methods removed or reorganized — many Get*Client/GetOpenAIClient-style helpers removed; use the new consolidated client properties or new constructors in your code paths using managed identities or connection strings.
Microsoft.ApplicationInsights2.23.0 is compatible with .NET 10 but on a deprecated legacy path; Microsoft recommends using the Azure Monitor / OpenTelemetry-based telemetry, and you are already adopting OpenTelemetry packages (good), so plan a migration away from the classic SDK.- Beta packages present (
OpenTelemetry.Instrumentation.EntityFrameworkCore1.14.0-beta.2,OpenTelemetry.Instrumentation.SqlClient1.14.0-beta.1,DYMO.Connect.SDK1.4.8.13-beta) add minor stability risk—validate thoroughly in test environments.Recommend: Run smoke tests on all code paths using Azure auth, connection strings, benchmarks, and telemetry; check the CHANGELOG.md for each package you use and apply any needed type/API renames before deployment.
55-55: Ignore this review comment—it references package upgrades that are not part of this PR.The git diff shows only
System.Text.Encodings.Webbeing removed (RC version). The test packages mentioned at lines 55, 62–63, and 77–79 (Microsoft.NET.Test.Sdk18.0.1,MSTest.*4.0.2,Reqnroll*3.2.1) are in their current state and are not being changed by this PR. The review incorrectly assumes these packages are being upgraded and warns about breaking changes that do not apply to this changeset.Likely an incorrect or invalid review comment.
| <PackageVersion Include="Microsoft.AspNetCore.Components.Authorization" Version="10.0.0" /> | ||
| <PackageVersion Include="Microsoft.AspNetCore.Components.Web" Version="10.0.0" /> | ||
| <PackageVersion Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="10.0.0" /> | ||
| <PackageVersion Include="Microsoft.AspNetCore.Mvc.Testing" Version="10.0.0" /> | ||
| <PackageVersion Include="Microsoft.AspNetCore.SignalR.Client" Version="10.0.0" /> | ||
| <PackageVersion Include="Microsoft.AspNetCore.SignalR.Common" Version="10.0.0" /> | ||
| <PackageVersion Include="Microsoft.AspNetCore.TestHost" Version="10.0.0" /> | ||
| <PackageVersion Include="Microsoft.EntityFrameworkCore.InMemory" Version="10.0.0" /> | ||
| <PackageVersion Include="Microsoft.Extensions.Configuration" Version="10.0.0" /> | ||
| <PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="10.0.0" /> | ||
| <PackageVersion Include="Microsoft.Extensions.Configuration.EnvironmentVariables" Version="10.0.0" /> | ||
| <PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="10.0.0" /> | ||
| <PackageVersion Include="Microsoft.Extensions.Configuration.UserSecrets" Version="10.0.0" /> | ||
| <PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="10.0.0" /> | ||
| <PackageVersion Include="Microsoft.Extensions.Hosting" Version="10.0.0" /> | ||
| <PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="10.0.0" /> | ||
| <PackageVersion Include="Microsoft.Extensions.Http" Version="10.0.0" /> | ||
| <PackageVersion Include="Microsoft.Extensions.Http.Resilience" Version="10.0.0" /> | ||
| <PackageVersion Include="Microsoft.Extensions.Logging" Version="10.0.0" /> | ||
| <PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="10.0.0" /> | ||
| <PackageVersion Include="Microsoft.Extensions.Logging.Debug" Version="10.0.0" /> | ||
| <PackageVersion Include="Microsoft.Extensions.ObjectPool" Version="10.0.0" /> | ||
| <PackageVersion Include="Microsoft.Extensions.Options" Version="10.0.0" /> | ||
| <PackageVersion Include="Microsoft.Extensions.Options.DataAnnotations" Version="10.0.0" /> | ||
| <PackageVersion Include="Microsoft.FluentUI.AspNetCore.Components" Version="4.13.1" /> | ||
| <PackageVersion Include="Microsoft.FluentUI.AspNetCore.Components.Emoji" Version="4.13.1" /> | ||
| <PackageVersion Include="Microsoft.FluentUI.AspNetCore.Components.Icons" Version="4.13.1" /> | ||
| <PackageVersion Include="Microsoft.Graph" Version="5.96.0" /> | ||
| <PackageVersion Include="Microsoft.Identity.Client" Version="4.79.2" /> | ||
| <PackageVersion Include="Microsoft.Maui.Controls" Version="10.0.10" /> | ||
| <PackageVersion Include="Microsoft.Maui.Controls.Compatibility" Version="10.0.10" /> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
Ensure all consuming projects are on compatible TFMs before locking into the 10.0.0 Microsoft stack.
Moving the ASP.NET Core, Identity/EF Core, Microsoft.Extensions.*, MAUI, Windows App SDK/WinUI, Graph, and OpenIddict/NSwag/NuGet packages to these versions is aligned with a .NET 10 migration, but will break restore/build if any project still targets older TFMs (e.g., net6.0/net7.0) without conditional package references. Please double‑check that all projects pulling these central versions now target the expected net10.0 (and friends), or add Condition-based overrides where you still multi‑target older frameworks.
To verify TFMs and spot any holdouts:
Also applies to: 56-59, 65-67
🏁 Script executed:
#!/bin/bash
# List all TargetFramework / TargetFrameworks entries
rg -nP '<TargetFrameworks?>\s*<.*>' -S .
# Optionally, show which projects reference a few key 10.0.0 packages
rg -n 'Microsoft.AspNetCore.Mvc.Testing|Microsoft.Extensions.Hosting' -S **/*.csprojLength of output: 51
I'll generate improved shell scripts to properly discover and verify the codebase:
🏁 Script executed:
#!/bin/bash
# Find all .csproj files in the repository
echo "=== Finding all .csproj files ==="
fd -e csproj
echo ""
echo "=== Extracting TargetFramework/TargetFrameworks from .csproj files ==="
fd -e csproj -x rg -n '<TargetFrameworks?>' {}
echo ""
echo "=== Checking for PackageReference entries to 10.0.0 packages in .csproj ==="
fd -e csproj -x rg -n 'Version="10\.0\.' {}
echo ""
echo "=== Checking for Condition attributes on PackageReferences in .csproj ==="
fd -e csproj -x rg -n 'PackageReference.*Condition' {}Length of output: 11394
🏁 Script executed:
#!/bin/bash
# Identify projects targeting net7.0 and net8.0
echo "=== Projects targeting net7.0 ==="
fd -e csproj -x grep -l "net7.0" {}
echo ""
echo "=== Projects targeting net8.0 ==="
fd -e csproj -x grep -l "net8.0" {}
echo ""
echo "=== Check if performance or sample projects have direct package references to 10.0.0 ==="
fd -e csproj | xargs rg -l 'PackageReference.*Version.*10\.0\.0'Length of output: 805
🏁 Script executed:
#!/bin/bash
# Check PackageReference entries in net7.0 projects
echo "=== PackageReferences in net7.0 projects ==="
rg -n 'PackageReference' \
tests/ISynergy.Framework.Payment.Mollie.Tests/ISynergy.Framework.Payment.Mollie.Tests.csproj \
tests/ISynergy.Framework.Payment.Tests/ISynergy.Framework.Payment.Tests.csproj \
tests/ISynergy.Framework.AspNetCore.WebDav.Tests/ISynergy.Framework.AspNetCore.WebDav.Tests.csproj \
samples/Sample.TokenService/Sample.TokenService.csproj \
samples/Sample.Storage.Azure.Wopi/Sample.Wopi.AzureStorage.csproj \
samples/Sample.TokenService.Integration.Tests/Sample.TokenService.Integration.Tests.csproj \
samples/Sample.Payment.Mollie/Mollie.Sample.csproj
echo ""
echo "=== PackageReferences in net8.0 project ==="
rg -n 'PackageReference' tests/ISynergy.Framework.AspNetCore.Proxy.Tests/ISynergy.Framework.AspNetCore.Proxy.Tests.csproj
echo ""
echo "=== Check for specific problematic packages in net7.0 projects ==="
rg -n 'Microsoft\.AspNetCore|Microsoft\.Extensions\.|Microsoft\.EntityFrameworkCore' \
tests/ISynergy.Framework.Payment.Mollie.Tests/ISynergy.Framework.Payment.Mollie.Tests.csproj \
tests/ISynergy.Framework.Payment.Tests/ISynergy.Framework.Payment.Tests.csproj \
tests/ISynergy.Framework.AspNetCore.WebDav.Tests/ISynergy.Framework.AspNetCore.WebDav.Tests.csproj \
samples/Sample.TokenService/Sample.TokenService.csproj \
samples/Sample.Storage.Azure.Wopi/Sample.Wopi.AzureStorage.csproj \
samples/Sample.TokenService.Integration.Tests/Sample.TokenService.Integration.Tests.csproj \
samples/Sample.Payment.Mollie/Mollie.Sample.csprojLength of output: 7804
Update consuming projects to net10.0 or add Condition-based package overrides for older TFMs.
Verification confirms the concern: seven net7.0 projects and one net8.0 project reference packages now locked to version 10.0.0 in Directory.Packages.props (Microsoft.AspNetCore., Microsoft.Extensions., Microsoft.EntityFrameworkCore.*). These packages require net10.0 minimum and will fail restore/build on net7.0/net8.0 targets.
Affected projects:
-
net7.0 holdouts:
samples/Sample.TokenService.Integration.Tests(Microsoft.AspNetCore.Mvc.Testing, Microsoft.AspNetCore.TestHost)samples/Sample.Storage.Azure.Wopi(Microsoft.AspNetCore.Razor.Design)tests/ISynergy.Framework.AspNetCore.WebDav.Tests(Microsoft.AspNetCore.Hosting, Microsoft.AspNetCore.TestHost, Microsoft.Extensions.Logging.Debug)tests/ISynergy.Framework.Payment.Mollie.Tests(Microsoft.Extensions.Configuration.Json, Microsoft.Extensions.DependencyInjection, Microsoft.Extensions.Options.ConfigurationExtensions)
-
net8.0 holdout:
tests/ISynergy.Framework.AspNetCore.Proxy.Tests(Microsoft.EntityFrameworkCore.SqlServer, Microsoft.Extensions.Configuration.Json)
Upgrade these projects to net10.0 or add conditional package version overrides in Directory.Packages.props using Condition attributes to restore compatibility with older frameworks.
🤖 Prompt for AI Agents
In Directory.Packages.props lines 24-54: several PackageVersion entries
(Microsoft.AspNetCore.*, Microsoft.Extensions.*,
Microsoft.EntityFrameworkCore.*) are pinned to 10.0.0 which requires net10.0 and
breaks restore/build for the listed net7.0/net8.0 projects; either upgrade those
projects to TargetFramework net10.0 or add Condition-based overrides in
Directory.Packages.props that supply older compatible package versions for
net7.0 and net8.0 (e.g., add PackageVersion entries with
Condition="'$(TargetFramework)' == 'net7.0'" or "'$(TargetFramework)' ==
'net8.0'" that specify the appropriate 7.x/8.x package versions for only the
affected package IDs noted in the review, ensuring the default 10.0.0 entries
remain for net10.0 projects).
Summary by CodeRabbit
New Features
Tests
Documentation
Chores
Dependencies