Skip to content

Conversation

@ignatandrei
Copy link
Owner

@ignatandrei ignatandrei commented Aug 30, 2025

Summary by CodeRabbit

  • New Features

    • Added SG4MVC to the catalog, bringing the total to 216.
    • Added a full MVC demo project and guided CodeTour demonstrating SG4MVC.
  • Documentation

    • New example page detailing SG4MVC setup, generated files, usage notes, and downloads.
    • Updated list page and README to include SG4MVC and reflect the new total.
  • Chores

    • Updated "Latest Update" date, included SG4MVC in build inputs/metadata, and applied minor link/formatting tweaks.

Copilot AI review requested due to automatic review settings August 30, 2025 03:46
@coderabbitai
Copy link

coderabbitai bot commented Aug 30, 2025

Note

Other AI code review bot(s) detected

CodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review.

Walkthrough

Adds SG4MVC as the 216th generator across documentation, data, and listings; introduces a new Category enum value MVC=36; appends generator records and example metadata; and adds a complete ASP.NET Core MVC demo project (solution, project, controllers, views, assets, tours, and docs).

Changes

Cohort / File(s) Summary
Docs and listings
README.md, later.md, v2/book/list.html, v2/book/examples/SG4MVC.html, v2/book/pandocHTML.yaml
Update total count 215→216; add SG4MVC entry and example page; update "Latest Update" dates; minor link/format tweaks; include new example HTML in pandoc inputs.
Category enum
v2/GeneratorData/Category.cs
Add enum member MVC = 36 after Async = 35.
Generator records / indexes
v2/RSCGExamplesData/GeneratorDataRec.json, v2/RSCGExamplesData/NoExample.json
Append SG4MVC record (ID SG4MVC, Category 36, dtStart 2025-08-04, show:true); remove two NoExample entries (IDs 214, 215).
Example metadata & docs
v2/rscg_examples/SG4MVC/description.json, v2/rscg_examples/SG4MVC/nuget.txt, v2/rscg_examples/SG4MVC/readme.txt
Add SG4MVC manifest, NuGet blurb, and README describing usage and links.
Example documentation page
v2/book/examples/SG4MVC.html
New HTML doc page describing SG4MVC, generated files list, images, and download/links.
CodeTour
v2/rscg_examples/SG4MVC/src/.tours/SG4MVC.tour
Add guided tour covering csproj and four generated files.
Solution & project files
v2/rscg_examples/SG4MVC/src/MVCDemo.sln, .../MVCDemo/MVCDemo.csproj, .../Properties/launchSettings.json
New solution and net9.0 project; reference SG4MVC 0.9.4-beta; generator output configured to obj/GX; add launch profiles.
App code (controller/models/program)
.../MVCDemo/Program.cs, .../Controllers/HomeController.cs, .../Models/ErrorViewModel.cs
Add Program bootstrap, HomeController (Index, Privacy, Error), and ErrorViewModel.
Views / Razor setup
.../Views/_ViewImports.cshtml, .../Views/_ViewStart.cshtml, .../Views/Shared/_Layout.cshtml, .../Views/Shared/_Layout.cshtml.css, .../Views/Shared/Error.cshtml, .../Views/Shared/_ValidationScriptsPartial.cshtml, .../Views/Home/Index.cshtml, .../Views/Home/Privacy.cshtml
Add layout, styles, validation partial, home/privacy views; register default and Sg4Mvc tag helpers; set default layout.
Config & assets
.../appsettings.json, .../appsettings.Development.json, .../wwwroot/css/site.css, .../wwwroot/js/site.js
Add standard app settings, development logging config, base CSS, and placeholder JS.
Licenses
.../wwwroot/lib/bootstrap/LICENSE, .../wwwroot/lib/jquery/LICENSE.txt, .../wwwroot/lib/jquery-validation/LICENSE.md, .../wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt
Add license files for bundled client libraries.
Generator output transformation
v2/Generator/MultiGeneratorV2.cs
Update SourceNoRSCG() string replacements to rewrite "(../../wiki/" to the generator-specific wiki path using d.Generator!.Source.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant Dev as Developer
  participant Build as dotnet build
  participant Gen as Sg4Mvc.Generator
  participant C as C# Compiler
  participant Proj as MVCDemo Project

  Dev->>Build: Build MVCDemo
  Build->>Gen: Invoke source generator
  Gen-->>Proj: Emit generated files (MVC.cs, MVCPages.cs, ...)
  Build->>C: Compile sources + generated files
  C-->>Dev: Build output (app + helpers)
  note over Gen,Proj: SG4MVC-generated helpers available to views/controllers
Loading
sequenceDiagram
  autonumber
  participant Browser as User
  participant App as ASP.NET Core App
  participant Router as Routing
  participant HC as HomeController
  participant Views as Razor Views
  participant Static as Static Assets

  Browser->>App: GET /
  App->>Router: Match route
  Router->>HC: Invoke Index()
  HC->>Views: Render Index view (may use MVC.* helpers)
  Views-->>Browser: HTML response
  Browser->>App: GET CSS/JS
  App->>Static: Serve assets
  Static-->>Browser: Files
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Poem

I hop and nibble at the list, one more bloom in law and code,
A thirty-sixth enum branch unfurls where MVC helpers strode.
Views and tours and demos spring, the docs all sing and thrive—
I twitch my nose, commit is pushed, the garden's more alive. 🥕


📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 60b8b6b and 076d34f.

⛔ Files ignored due to path filters (1)
  • v2/rscg_examples_site/static/exports/RSCG.xlsx is excluded by !**/*.xlsx
📒 Files selected for processing (1)
  • v2/Generator/MultiGeneratorV2.cs (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
v2/Generator/MultiGeneratorV2.cs (1)
v2/Generator/Generator.cs (1)
  • Generator (4-110)
⏰ 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: call-workflow-passing-data / build (24.3.0)
🔇 Additional comments (1)
v2/Generator/MultiGeneratorV2.cs (1)

126-126: No additional wiki link patterns detected
The existing replacement for “(../../wiki/” covers all current occurrences; no “(../wiki/” or “(./wiki/” links were found in README files.

✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch SG4MVC

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

CodeRabbit Commands (Invoked using PR/Issue comments)

Type @coderabbitai help to get the list of available commands.

Other keywords and placeholders

  • Add @coderabbitai ignore or @coderabbit ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Status, Documentation and Community

  • Visit our Status Page to check the current availability of CodeRabbit.
  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

Copilot AI left a 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 PR adds SG4MVC as a new Roslyn Source Code Generator example, bringing the total count to 216 generators. SG4MVC is a source generator for ASP.NET MVC Core apps that creates strongly typed helpers to eliminate the use of literal strings in many places, particularly for controller and action references.

  • Adds SG4MVC as example #216 in the MVC category
  • Includes complete ASP.NET MVC demo project with SG4MVC configuration
  • Updates documentation and generator listings

Reviewed Changes

Copilot reviewed 35 out of 103 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
v2/rscg_examples/SG4MVC/ Complete example project demonstrating SG4MVC usage with MVC demo
v2/book/ Updates HTML documentation and generator listings
v2/RSCGExamplesData/ Removes SG4MVC from "no example" list and adds to generator data
v2/GeneratorData/ Adds MVC category and updates generator listing
README.md Updates total count and adds SG4MVC entry

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"] - MVCDemo</title>
<script type="importmap"></script>
Copy link

Copilot AI Aug 30, 2025

Choose a reason for hiding this comment

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

The script tag with type='importmap' is empty and serves no purpose. Either add import map content or remove this line entirely.

Suggested change
<script type="importmap"></script>

Copilot uses AI. Check for mistakes.
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 9

🧹 Nitpick comments (32)
v2/rscg_examples/SG4MVC/src/MVCDemo/appsettings.json (2)

8-8: Restrict AllowedHosts for production deployments

"*" is fine for samples/local dev. For production, override with explicit hosts (e.g., via appsettings.Production.json or environment variables).

Example override (new appsettings.Production.json):

{
  "AllowedHosts": "example.com;www.example.com"
}

3-6: Add Hosting lifetime logs for better diagnostics

Include Microsoft.Hosting.Lifetime logs to see start/stop messages, useful in containers and CI.

   "Logging": {
     "LogLevel": {
       "Default": "Information",
-      "Microsoft.AspNetCore": "Warning"
+      "Microsoft.AspNetCore": "Warning",
+      "Microsoft.Hosting.Lifetime": "Information"
     }
   },
v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/LICENSE (1)

1-22: Consider managing client libs via a package manager

To avoid vendoring binaries in git, consider LibMan or npm (with copy step) so versions and licenses stay traceable.

v2/GeneratorData/Category.cs (1)

3-40: Optional: stabilize enum numeric values

If these values are persisted/serialized, consider assigning explicit numbers to all members to avoid accidental renumbering when inserting earlier items.

v2/rscg_examples/SG4MVC/src/MVCDemo/appsettings.Development.json (1)

1-8: Optional: add dev-friendly logging knobs.

Consider elevating some dev-time logs to ease debugging.

Example:

   "Logging": {
     "LogLevel": {
       "Default": "Information",
-      "Microsoft.AspNetCore": "Warning"
+      "Microsoft.AspNetCore": "Information",
+      "Microsoft.Hosting.Lifetime": "Information"
     }
   }
v2/rscg_examples/SG4MVC/src/MVCDemo/MVCDemo.csproj (1)

15-18: Scope generated-files emission to Debug builds.

Emitting compiler-generated files for all configurations can bloat CI artifacts. Gate it to Debug.

-  <PropertyGroup>
-    <EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
-    <CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)\GX</CompilerGeneratedFilesOutputPath>
-  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)'=='Debug'">
+    <EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
+    <CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)GX</CompilerGeneratedFilesOutputPath>
+  </PropertyGroup>

Note: Dropped the backslash so MSBuild normalizes the path cross-platform.

later.md (2)

7-7: Grammar nit: “These are”

Minor wording fix.

-## This are to be done later
+## These are to be done later

143-289: Reduce markdownlint noise: remove duplicate bare URLs.

Each entry shows both a markdown link and a trailing bare URL, triggering MD034. Keep only one.

Example edits (apply similarly to all items):

-23) [https://github.com/ramhari-dev/PropGenAoT]( https://github.com/ramhari-dev/PropGenAoT) , https://github.com/ramhari-dev/PropGenAoT 
+23) [PropGenAoT](https://github.com/ramhari-dev/PropGenAoT)

-24) [https://github.com/stbychkov/AutoLoggerMessage]( https://github.com/stbychkov/AutoLoggerMessage) , https://github.com/stbychkov/AutoLoggerMessage 
+24) [AutoLoggerMessage](https://github.com/stbychkov/AutoLoggerMessage)

If you prefer the raw URL style, wrap in angle brackets and drop the duplicated markdown link instead.

v2/rscg_examples/SG4MVC/src/MVCDemo/Models/ErrorViewModel.cs (1)

7-7: Treat whitespace-only RequestId as missing.

Use IsNullOrWhiteSpace to avoid showing IDs that are just spaces.

-        public bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
+        public bool ShowRequestId => !string.IsNullOrWhiteSpace(RequestId);
v2/book/examples/SG4MVC.html (6)

15-15: Grammar: “strongly typed.”

Minor wording fix.

-Generate strong typed HTML helpers for ASP.NET MVC projects.
+Generate strongly typed HTML helpers for ASP.NET MVC projects.

21-22: Clarify phrasing for package reference.

More natural wording and file extension.

-    Add reference to the  <a href="https://www.nuget.org/packages/SG4MVC/" target="_blank">SG4MVC</a> in the csproj
+    Add a reference to the <a href="https://www.nuget.org/packages/SG4MVC/" target="_blank" rel="noopener noreferrer">SG4MVC</a> package in the .csproj

5-11: Harden external links opened in new tabs.

Add rel="noopener noreferrer" to mitigate tabnabbing and improve perf.

-Nuget : <a href="https://www.nuget.org/packages/SG4MVC/" target="_blank">https://www.nuget.org/packages/SG4MVC/</a>
+Nuget : <a href="https://www.nuget.org/packages/SG4MVC/" target="_blank" rel="noopener noreferrer">https://www.nuget.org/packages/SG4MVC/</a>
...
-<p>You can find more details at : <a href="https://github.com/SG4MVC/SG4MVC" target="_blank"> https://github.com/SG4MVC/SG4MVC</a></p>
+<p>You can find more details at : <a href="https://github.com/SG4MVC/SG4MVC" target="_blank" rel="noopener noreferrer"> https://github.com/SG4MVC/SG4MVC</a></p>
...
-<p>Source: <a href="https://github.com/SG4MVC/SG4MVC" target="_blank">https://github.com/SG4MVC/SG4MVC</a> </p>
+<p>Source: <a href="https://github.com/SG4MVC/SG4MVC" target="_blank" rel="noopener noreferrer">https://github.com/SG4MVC/SG4MVC</a> </p>

23-53: Accessibility: add alt text to images.

Improves screen-reader and SEO.

-<img src="images/SG4MVC/MVCDemo.csproj.png" width="580" height="580" />
+<img src="images/SG4MVC/MVCDemo.csproj.png" width="580" height="580" alt="MVCDemo.csproj showing SG4MVC package reference" />
...
-<img src="images/SG4MVC/csFiles/Program.cs.png" width="580" height="580" />
+<img src="images/SG4MVC/csFiles/Program.cs.png" width="580" height="580" alt="Program.cs configuration for MVC demo" />
...
-<img src="images/SG4MVC/generated/MVC.cs.png" width="580" height="580" />
+<img src="images/SG4MVC/generated/MVC.cs.png" width="580" height="580" alt="Generated MVC.cs file" />
...
-<img src="images/SG4MVC/generated/MVCDemo_Controllers_HomeController.generated.cs.png" width="580" height="580" />
+<img src="images/SG4MVC/generated/MVCDemo_Controllers_HomeController.generated.cs.png" width="580" height="580" alt="Generated HomeController file" />
...
-<img src="images/SG4MVC/generated/MVCPages.cs.png" width="580" height="580" />
+<img src="images/SG4MVC/generated/MVCPages.cs.png" width="580" height="580" alt="Generated MVCPages.cs file" />
...
-<img src="images/SG4MVC/generated/Sg4Mvc.generated.cs.png" width="580" height="580" />
+<img src="images/SG4MVC/generated/Sg4Mvc.generated.cs.png" width="580" height="580" alt="Generated Sg4Mvc.generated.cs file" />

55-59: Harden external doc link.

Add rel for target=_blank anchors.

-    <a target="_blank" href='https://ignatandrei.github.io/RSCG_Examples/v2/docs/SG4MVC'>
+    <a target="_blank" rel="noopener noreferrer" href='https://ignatandrei.github.io/RSCG_Examples/v2/docs/SG4MVC'>

63-66: Harden external list link.

Same as above.

-    <a target="_blank" href='https://ignatandrei.github.io/RSCG_Examples/v2/docs/List-of-RSCG'>
+    <a target="_blank" rel="noopener noreferrer" href='https://ignatandrei.github.io/RSCG_Examples/v2/docs/List-of-RSCG'>
v2/rscg_examples/SG4MVC/readme.txt (1)

18-24: Code-fence language hint: use “cshtml” for Razor.

Improves syntax highlighting on GitHub.

-```HTML+Razor
+```cshtml
 @Html.ActionLink("Dinner Details", "Details", "Dinners", new { id = Model.DinnerID }, null)

...
-HTML+Razor +cshtml
Dinner Details

...
-```HTML+Razor
+```cshtml
<a mvc-action="MVC.Dinners.Details(Model.DinnerID)">Dinner Details</a>


Also applies to: 27-33

</blockquote></details>
<details>
<summary>v2/rscg_examples/SG4MVC/description.json (1)</summary><blockquote>

`14-16`: **Clean up paths and empty entries.**

- "csFiles" likely needs the relative path to the demo file.
- "includeAdditionalFiles" contains an empty string; drop it or provide real files (e.g., readme.txt, nuget.txt).

```diff
-      "csFiles":["Program.cs"],
+      "csFiles":["src/MVCDemo/Program.cs"],
@@
-      "includeAdditionalFiles":[""]
+      "includeAdditionalFiles":[]
v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/css/site.css (1)

11-13: Use :focus-visible to reduce focus ring noise for mouse users.

Improves UX while preserving keyboard accessibility.

-.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus {
+.btn:focus-visible, .btn:active:focus-visible, .btn-link.nav-link:focus-visible,
+.form-control:focus-visible, .form-check-input:focus-visible {
   box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb;
 }
v2/rscg_examples/SG4MVC/src/MVCDemo/Views/Shared/_Layout.cshtml.css (1)

10-18: Prefer Bootstrap CSS variables over hard-coded brand colors.

Keeps the demo aligned with theme changes.

-a {
-  color: #0077cc;
-}
+a { color: var(--bs-link-color, #0d6efd); }
@@
-.btn-primary {
-  color: #fff;
-  background-color: #1b6ec2;
-  border-color: #1861ac;
-}
+.btn-primary {
+  color: var(--bs-btn-color, #fff);
+  background-color: var(--bs-btn-bg, var(--bs-primary, #0d6efd));
+  border-color: var(--bs-btn-border-color, var(--bs-primary, #0d6efd));
+}
v2/rscg_examples/SG4MVC/src/.tours/SG4MVC.tour (1)

20-42: Guard steps that point to generated files under obj/.

These files won’t exist until after build; tours will break in a fresh clone.

  • Add an initial step instructing a build, or annotate these steps’ descriptions accordingly (as you did in Step 2).
  • Optionally replace “file” with a more stable relative path if CodeTour supports conditions (e.g., “when”: “fileExists”). If not, keep the build instruction explicit.
v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/js/site.js (1)

1-4: Either wire a minimal ready hook or drop the file until needed

If no custom JS is planned, consider removing the script reference from the layout to save a request. If you want a scaffold, add a tiny DOMContentLoaded hook.

+// Strict + ready hook scaffold for future code.
+'use strict';
+document.addEventListener('DOMContentLoaded', () => {
+  // TODO: add site-specific JS here
+});
v2/rscg_examples/SG4MVC/src/MVCDemo/Views/Home/Index.cshtml (1)

5-8: External link: open in new tab and harden with rel attributes

Avoid navigating users away from the sample and add noopener/noreferrer for safety.

-    <p>Learn about <a href="https://learn.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
+    <p>Learn about <a href="https://learn.microsoft.com/aspnet/core" target="_blank" rel="noopener noreferrer">building Web apps with ASP.NET Core</a>.</p>
v2/rscg_examples/SG4MVC/src/MVCDemo/Views/Home/Privacy.cshtml (1)

1-6: Flag placeholder privacy text

Add a TODO so this doesn’t ship as-is, or extract content to a partial for easier replacement.

 @* Use this page to detail your site's privacy policy. *@
-<p>Use this page to detail your site's privacy policy.</p>
+<p><!-- TODO: Replace with the actual privacy policy --></p>
v2/rscg_examples/SG4MVC/src/MVCDemo/Views/Shared/_ValidationScriptsPartial.cshtml (1)

1-2: Add cache-busting and ensure jQuery loads first

  • Append asp-append-version="true" to both <script> tags:
-<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
-<script src="~/lib/jquery-validation-unobtrusive/dist/jquery.validate.unobtrusive.min.js"></script>
+<script src="~/lib/jquery-validation/dist/jquery.validate.min.js" asp-append-version="true"></script>
+<script src="~/lib/jquery-validation-unobtrusive/dist/jquery.validate.unobtrusive.min.js" asp-append-version="true"></script>
  • Confirm jQuery is included before this partial in your layout.
v2/book/list.html (1)

889-892: Verified: SG4MVC.html exists at v2/book/examples and the link is correct. Optionally add a title/description in SG4MVC.html to match other entries.

v2/rscg_examples/SG4MVC/src/MVCDemo/Views/Shared/Error.cshtml (1)

16-25: Show “Development Mode” guidance only outside Development.

Hide this block when running in Development to avoid redundant messaging.

Apply this diff:

-<h3>Development Mode</h3>
-<p>
-    Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred.
-</p>
-<p>
-    <strong>The Development environment shouldn't be enabled for deployed applications.</strong>
-    It can result in displaying sensitive information from exceptions to end users.
-    For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
-    and restarting the app.
-</p>
+<environment exclude="Development">
+    <h3>Development Mode</h3>
+    <p>
+        Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred.
+    </p>
+    <p>
+        <strong>The Development environment shouldn't be enabled for deployed applications.</strong>
+        It can result in displaying sensitive information from exceptions to end users.
+        For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
+        and restarting the app.
+    </p>
+</environment>

Also confirm HomeController.Error exists and matches UseExceptionHandler("/Home/Error").

v2/rscg_examples/SG4MVC/src/MVCDemo/Program.cs (2)

19-19: Remove unused authorization middleware or add authentication.

UseAuthorization without any policies/auth config is a no-op and adds pipeline overhead.

Either remove it for the sample or wire up UseAuthentication/AddAuthentication before it if you plan to protect endpoints.


16-16: Consider enabling HTTPS redirection in non-dev.

You already enable HSTS in production; enabling HTTPS redirection aligns with that posture.

-//app.UseHttpsRedirection();
+if (!app.Environment.IsDevelopment()) app.UseHttpsRedirection();
README.md (3)

23-24: Polish the introductory sentence for clarity.

Current phrasing is awkward.

Apply:

-Those are the 216 Roslyn Source Code Generators that I have tested you can see and download source code example.
+These are the 216 Roslyn Source Code Generators that I have tested. You can view and download the sample source code.

25-46: Confirm SG4MVC metadata and list both NuGet packages.

Please verify the author attribution and consider listing both runtime and generator packages to avoid confusion.

Proposed tweak:

- Nuget: [https://www.nuget.org/packages/SG4MVC/](https://www.nuget.org/packages/SG4MVC/) 
+ NuGet (runtime): [Sg4Mvc](https://www.nuget.org/packages/Sg4Mvc/)
+ NuGet (generator): [Sg4Mvc.Generator](https://www.nuget.org/packages/Sg4Mvc.Generator/)

If “Mark Flanagan” isn’t the correct attribution for the package you’re highlighting, please update the Author line accordingly. I can send a PR-ready patch once you confirm.


5183-5196: Fix markdownlint MD034 (bare URLs) in “Contributors Welcome” items.

There are duplicate bare URLs that trigger MD034; keep a single markdown link and wrap the “open issue” URL.

Apply to this item (and repeat for the rest in this block):

-35) [https://github.com/ramhari-dev/PropGenAoT]( https://github.com/ramhari-dev/PropGenAoT) , https://github.com/ramhari-dev/PropGenAoT 
+35) [PropGenAoT](https://github.com/ramhari-dev/PropGenAoT)
@@
-https://github.com/ignatandrei/RSCG_Examples/issues/new?title=https://github.com/ramhari-dev/PropGenAoT&body=https://github.com/ramhari-dev/PropGenAoT
+[Open issue](https://github.com/ignatandrei/RSCG_Examples/issues/new?title=PropGenAoT&body=https://github.com/ramhari-dev/PropGenAoT)

Another example:

-36) [https://github.com/stbychkov/AutoLoggerMessage]( https://github.com/stbychkov/AutoLoggerMessage) , https://github.com/stbychkov/AutoLoggerMessage
+36) [AutoLoggerMessage](https://github.com/stbychkov/AutoLoggerMessage)
@@
-https://github.com/ignatandrei/RSCG_Examples/issues/new?title=https://github.com/stbychkov/AutoLoggerMessage&body=https://github.com/stbychkov/AutoLoggerMessage
+[Open issue](https://github.com/ignatandrei/RSCG_Examples/issues/new?title=AutoLoggerMessage&body=https://github.com/stbychkov/AutoLoggerMessage)
v2/rscg_examples/SG4MVC/src/MVCDemo/Views/Shared/_Layout.cshtml (1)

7-7: Remove unused empty importmap tag.

Empty importmap does nothing; drop it or populate it if you plan to use import maps.

-    <script type="importmap"></script>
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

💡 Knowledge Base configuration:

  • MCP integration is disabled by default for public repositories
  • Jira integration is disabled by default for public repositories
  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 734d597 and 60b8b6b.

⛔ Files ignored due to path filters (59)
  • v2/Generator/all.csv is excluded by !**/*.csv
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/favicon.ico is excluded by !**/*.ico
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css is excluded by !**/dist/**
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.css.map is excluded by !**/dist/**, !**/*.map
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css is excluded by !**/dist/**
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.min.css.map is excluded by !**/dist/**, !**/*.map
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css is excluded by !**/dist/**
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.css.map is excluded by !**/dist/**, !**/*.map
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css is excluded by !**/dist/**
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-grid.rtl.min.css.map is excluded by !**/dist/**, !**/*.map
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css is excluded by !**/dist/**
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.css.map is excluded by !**/dist/**, !**/*.map
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css is excluded by !**/dist/**
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.min.css.map is excluded by !**/dist/**, !**/*.map
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css is excluded by !**/dist/**
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.css.map is excluded by !**/dist/**, !**/*.map
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css is excluded by !**/dist/**
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-reboot.rtl.min.css.map is excluded by !**/dist/**, !**/*.map
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css is excluded by !**/dist/**
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.css.map is excluded by !**/dist/**, !**/*.map
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css is excluded by !**/dist/**
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.min.css.map is excluded by !**/dist/**, !**/*.map
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css is excluded by !**/dist/**
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.css.map is excluded by !**/dist/**, !**/*.map
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css is excluded by !**/dist/**
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/css/bootstrap-utilities.rtl.min.css.map is excluded by !**/dist/**, !**/*.map
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/css/bootstrap.css is excluded by !**/dist/**
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/css/bootstrap.css.map is excluded by !**/dist/**, !**/*.map
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css is excluded by !**/dist/**
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/css/bootstrap.min.css.map is excluded by !**/dist/**, !**/*.map
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css is excluded by !**/dist/**
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.css.map is excluded by !**/dist/**, !**/*.map
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css is excluded by !**/dist/**
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/css/bootstrap.rtl.min.css.map is excluded by !**/dist/**, !**/*.map
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js is excluded by !**/dist/**
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.js.map is excluded by !**/dist/**, !**/*.map
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js is excluded by !**/dist/**, !**/*.min.js
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/js/bootstrap.bundle.min.js.map is excluded by !**/dist/**, !**/*.map, !**/*.min.js.map
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js is excluded by !**/dist/**
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.js.map is excluded by !**/dist/**, !**/*.map
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js is excluded by !**/dist/**, !**/*.min.js
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/js/bootstrap.esm.min.js.map is excluded by !**/dist/**, !**/*.map, !**/*.min.js.map
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/js/bootstrap.js is excluded by !**/dist/**
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/js/bootstrap.js.map is excluded by !**/dist/**, !**/*.map
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js is excluded by !**/dist/**, !**/*.min.js
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/dist/js/bootstrap.min.js.map is excluded by !**/dist/**, !**/*.map, !**/*.min.js.map
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/jquery-validation-unobtrusive/dist/jquery.validate.unobtrusive.js is excluded by !**/dist/**
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/jquery-validation-unobtrusive/dist/jquery.validate.unobtrusive.min.js is excluded by !**/dist/**, !**/*.min.js
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/jquery-validation/dist/additional-methods.js is excluded by !**/dist/**
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/jquery-validation/dist/additional-methods.min.js is excluded by !**/dist/**, !**/*.min.js
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/jquery-validation/dist/jquery.validate.js is excluded by !**/dist/**
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/jquery-validation/dist/jquery.validate.min.js is excluded by !**/dist/**, !**/*.min.js
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/jquery/dist/jquery.js is excluded by !**/dist/**
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/jquery/dist/jquery.min.js is excluded by !**/dist/**, !**/*.min.js
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/jquery/dist/jquery.min.map is excluded by !**/dist/**, !**/*.map
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/jquery/dist/jquery.slim.js is excluded by !**/dist/**
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/jquery/dist/jquery.slim.min.js is excluded by !**/dist/**, !**/*.min.js
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/jquery/dist/jquery.slim.min.map is excluded by !**/dist/**, !**/*.map
  • v2/rscg_examples_site/static/sources/SG4MVC.zip is excluded by !**/*.zip
📒 Files selected for processing (34)
  • README.md (3 hunks)
  • later.md (2 hunks)
  • v2/GeneratorData/Category.cs (1 hunks)
  • v2/RSCGExamplesData/GeneratorDataRec.json (1 hunks)
  • v2/RSCGExamplesData/NoExample.json (0 hunks)
  • v2/book/examples/SG4MVC.html (1 hunks)
  • v2/book/list.html (2 hunks)
  • v2/book/pandocHTML.yaml (1 hunks)
  • v2/rscg_examples/SG4MVC/description.json (1 hunks)
  • v2/rscg_examples/SG4MVC/nuget.txt (1 hunks)
  • v2/rscg_examples/SG4MVC/readme.txt (1 hunks)
  • v2/rscg_examples/SG4MVC/src/.tours/SG4MVC.tour (1 hunks)
  • v2/rscg_examples/SG4MVC/src/MVCDemo.sln (1 hunks)
  • v2/rscg_examples/SG4MVC/src/MVCDemo/Controllers/HomeController.cs (1 hunks)
  • v2/rscg_examples/SG4MVC/src/MVCDemo/MVCDemo.csproj (1 hunks)
  • v2/rscg_examples/SG4MVC/src/MVCDemo/Models/ErrorViewModel.cs (1 hunks)
  • v2/rscg_examples/SG4MVC/src/MVCDemo/Program.cs (1 hunks)
  • v2/rscg_examples/SG4MVC/src/MVCDemo/Properties/launchSettings.json (1 hunks)
  • v2/rscg_examples/SG4MVC/src/MVCDemo/Views/Home/Index.cshtml (1 hunks)
  • v2/rscg_examples/SG4MVC/src/MVCDemo/Views/Home/Privacy.cshtml (1 hunks)
  • v2/rscg_examples/SG4MVC/src/MVCDemo/Views/Shared/Error.cshtml (1 hunks)
  • v2/rscg_examples/SG4MVC/src/MVCDemo/Views/Shared/_Layout.cshtml (1 hunks)
  • v2/rscg_examples/SG4MVC/src/MVCDemo/Views/Shared/_Layout.cshtml.css (1 hunks)
  • v2/rscg_examples/SG4MVC/src/MVCDemo/Views/Shared/_ValidationScriptsPartial.cshtml (1 hunks)
  • v2/rscg_examples/SG4MVC/src/MVCDemo/Views/_ViewImports.cshtml (1 hunks)
  • v2/rscg_examples/SG4MVC/src/MVCDemo/Views/_ViewStart.cshtml (1 hunks)
  • v2/rscg_examples/SG4MVC/src/MVCDemo/appsettings.Development.json (1 hunks)
  • v2/rscg_examples/SG4MVC/src/MVCDemo/appsettings.json (1 hunks)
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/css/site.css (1 hunks)
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/js/site.js (1 hunks)
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/LICENSE (1 hunks)
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt (1 hunks)
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/jquery-validation/LICENSE.md (1 hunks)
  • v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/jquery/LICENSE.txt (1 hunks)
💤 Files with no reviewable changes (1)
  • v2/RSCGExamplesData/NoExample.json
🧰 Additional context used
🧬 Code graph analysis (2)
v2/rscg_examples/SG4MVC/src/MVCDemo/Program.cs (1)
v2/rscg_examples/TypedSignalR.Client/src/TestSignalRHub.ServiceDefaults/Extensions.cs (1)
  • WebApplication (93-110)
v2/rscg_examples/SG4MVC/src/MVCDemo/Controllers/HomeController.cs (1)
v2/rscg_examples/SG4MVC/src/MVCDemo/Models/ErrorViewModel.cs (1)
  • ErrorViewModel (3-8)
🪛 Biome (2.1.2)
v2/rscg_examples/SG4MVC/src/MVCDemo/Views/Shared/_Layout.cshtml.css

[error] 1-1: Unknown type selector is not allowed.

See MDN web docs for more details.
Consider replacing the unknown type selector with valid one.

(lint/correctness/noUnknownTypeSelector)

🪛 LanguageTool
v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/jquery-validation/LICENSE.md

[grammar] ~6-~6: There might be a mistake here.
Context: ...f charge, to any person obtaining a copy of this software and associated document...

(QB_NEW_EN)


[grammar] ~7-~7: There might be a mistake here.
Context: ...entation files (the "Software"), to deal in the Software without restriction, inc...

(QB_NEW_EN)


[grammar] ~8-~8: There might be a mistake here.
Context: ... including without limitation the rights to use, copy, modify, merge, publish, di...

(QB_NEW_EN)


[grammar] ~9-~9: There might be a mistake here.
Context: ...ish, distribute, sublicense, and/or sell copies of the Software, and to permit pe...

(QB_NEW_EN)


[grammar] ~10-~10: There might be a mistake here.
Context: ...o permit persons to whom the Software is furnished to do so, subject to the follo...

(QB_NEW_EN)


[grammar] ~13-~13: There might be a mistake here.
Context: ...s permission notice shall be included in all copies or substantial portions of th...

(QB_NEW_EN)


[grammar] ~16-~16: There might be a mistake here.
Context: ...WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO TH...

(QB_NEW_EN)


[grammar] ~17-~17: There might be a mistake here.
Context: ...ED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON...

(QB_NEW_EN)


[grammar] ~18-~18: There might be a mistake here.
Context: ...D NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE F...

(QB_NEW_EN)


[grammar] ~19-~19: There might be a mistake here.
Context: ...E LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTR...

(QB_NEW_EN)


[grammar] ~20-~20: There might be a mistake here.
Context: ...NTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWAR...

(QB_NEW_EN)


[grammar] ~21-~21: There might be a mistake here.
Context: ...SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

(QB_NEW_EN)


[grammar] ~22-~22: There might be a mistake here.
Context: ...E USE OR OTHER DEALINGS IN THE SOFTWARE.

(QB_NEW_EN)

v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/jquery/LICENSE.txt

[grammar] ~4-~4: There might be a mistake here.
Context: ... free of charge, to any person obtaining a copy of this software and associated d...

(QB_NEW_EN)


[grammar] ~5-~5: There might be a mistake here.
Context: ... and associated documentation files (the "Software"), to deal in the Software wit...

(QB_NEW_EN)


[grammar] ~6-~6: There might be a mistake here.
Context: ... Software without restriction, including without limitation the rights to use, co...

(QB_NEW_EN)


[grammar] ~7-~7: There might be a mistake here.
Context: ...ts to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copi...

(QB_NEW_EN)


[grammar] ~8-~8: There might be a mistake here.
Context: ...d/or sell copies of the Software, and to permit persons to whom the Software is f...

(QB_NEW_EN)


[grammar] ~9-~9: There might be a mistake here.
Context: ...ftware is furnished to do so, subject to the following conditions: The above cop...

(QB_NEW_EN)


[grammar] ~12-~12: There might be a mistake here.
Context: ...tice and this permission notice shall be included in all copies or substantial po...

(QB_NEW_EN)


[grammar] ~15-~15: There might be a mistake here.
Context: ...D "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LI...

(QB_NEW_EN)


[grammar] ~16-~16: There might be a mistake here.
Context: ...ING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULA...

(QB_NEW_EN)


[grammar] ~18-~18: There might be a mistake here.
Context: ...HALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER L...

(QB_NEW_EN)


[grammar] ~19-~19: There might be a mistake here.
Context: ...OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ...

(QB_NEW_EN)


[grammar] ~20-~20: There might be a mistake here.
Context: ...E, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DE...

(QB_NEW_EN)

v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt

[grammar] ~7-~7: There might be a mistake here.
Context: ...f charge, to any person obtaining a copy of this software and associated document...

(QB_NEW_EN)


[grammar] ~8-~8: There might be a mistake here.
Context: ...entation files (the "Software"), to deal in the Software without restriction, inc...

(QB_NEW_EN)


[grammar] ~9-~9: There might be a mistake here.
Context: ... including without limitation the rights to use, copy, modify, merge, publish, di...

(QB_NEW_EN)


[grammar] ~10-~10: There might be a mistake here.
Context: ...ish, distribute, sublicense, and/or sell copies of the Software, and to permit pe...

(QB_NEW_EN)


[grammar] ~11-~11: There might be a mistake here.
Context: ...o permit persons to whom the Software is furnished to do so, subject to the follo...

(QB_NEW_EN)


[grammar] ~14-~14: There might be a mistake here.
Context: ...rmission notice shall be included in all copies or substantial portions of the So...

(QB_NEW_EN)


[grammar] ~17-~17: There might be a mistake here.
Context: ...WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO TH...

(QB_NEW_EN)


[grammar] ~18-~18: There might be a mistake here.
Context: ...ED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON...

(QB_NEW_EN)


[grammar] ~19-~19: There might be a mistake here.
Context: ...D NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE F...

(QB_NEW_EN)


[grammar] ~20-~20: There might be a mistake here.
Context: ...E LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTR...

(QB_NEW_EN)


[grammar] ~21-~21: There might be a mistake here.
Context: ...NTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWAR...

(QB_NEW_EN)


[grammar] ~22-~22: There might be a mistake here.
Context: ...WARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

(QB_NEW_EN)


[grammar] ~23-~23: There might be a mistake here.
Context: ...E USE OR OTHER DEALINGS IN THE SOFTWARE.

(QB_NEW_EN)

v2/rscg_examples/SG4MVC/readme.txt

[grammar] ~3-~3: There might be a mistake here.
Context: ...ww.nuget.org/packages/SG4MVC) ## SG4MVC SG4MVC is a source generator for ASP.NET...

(QB_NEW_EN)


[grammar] ~39-~39: There might be a mistake here.
Context: ...Install SG4MVC is distributed using using NuGet. Visit the [G...

(QB_NEW_EN)

🪛 markdownlint-cli2 (0.17.2)
README.md

5183-5183: Bare URL used

(MD034, no-bare-urls)


5187-5187: Bare URL used

(MD034, no-bare-urls)


5190-5190: Bare URL used

(MD034, no-bare-urls)


5194-5194: Bare URL used

(MD034, no-bare-urls)


5197-5197: Bare URL used

(MD034, no-bare-urls)


5201-5201: Bare URL used

(MD034, no-bare-urls)


5204-5204: Bare URL used

(MD034, no-bare-urls)


5208-5208: Bare URL used

(MD034, no-bare-urls)


5211-5211: Bare URL used

(MD034, no-bare-urls)


5215-5215: Bare URL used

(MD034, no-bare-urls)


5218-5218: Bare URL used

(MD034, no-bare-urls)


5222-5222: Bare URL used

(MD034, no-bare-urls)


5225-5225: Bare URL used

(MD034, no-bare-urls)


5229-5229: Bare URL used

(MD034, no-bare-urls)


5232-5232: Bare URL used

(MD034, no-bare-urls)


5236-5236: Bare URL used

(MD034, no-bare-urls)


5239-5239: Bare URL used

(MD034, no-bare-urls)


5243-5243: Bare URL used

(MD034, no-bare-urls)


5246-5246: Bare URL used

(MD034, no-bare-urls)


5250-5250: Bare URL used

(MD034, no-bare-urls)


5253-5253: Bare URL used

(MD034, no-bare-urls)


5257-5257: Bare URL used

(MD034, no-bare-urls)


5260-5260: Bare URL used

(MD034, no-bare-urls)


5264-5264: Bare URL used

(MD034, no-bare-urls)


5267-5267: Bare URL used

(MD034, no-bare-urls)


5271-5271: Bare URL used

(MD034, no-bare-urls)


5274-5274: Bare URL used

(MD034, no-bare-urls)


5278-5278: Bare URL used

(MD034, no-bare-urls)


5281-5281: Bare URL used

(MD034, no-bare-urls)


5285-5285: Bare URL used

(MD034, no-bare-urls)


5288-5288: Bare URL used

(MD034, no-bare-urls)


5292-5292: Bare URL used

(MD034, no-bare-urls)


5295-5295: Bare URL used

(MD034, no-bare-urls)


5299-5299: Bare URL used

(MD034, no-bare-urls)


5302-5302: Bare URL used

(MD034, no-bare-urls)


5306-5306: Bare URL used

(MD034, no-bare-urls)


5309-5309: Bare URL used

(MD034, no-bare-urls)


5313-5313: Bare URL used

(MD034, no-bare-urls)


5316-5316: Bare URL used

(MD034, no-bare-urls)


5320-5320: Bare URL used

(MD034, no-bare-urls)


5323-5323: Bare URL used

(MD034, no-bare-urls)


5327-5327: Bare URL used

(MD034, no-bare-urls)


5330-5330: Bare URL used

(MD034, no-bare-urls)


5334-5334: Bare URL used

(MD034, no-bare-urls)


5337-5337: Bare URL used

(MD034, no-bare-urls)


5341-5341: Bare URL used

(MD034, no-bare-urls)


5344-5344: Bare URL used

(MD034, no-bare-urls)


5348-5348: Bare URL used

(MD034, no-bare-urls)


5351-5351: Bare URL used

(MD034, no-bare-urls)


5355-5355: Bare URL used

(MD034, no-bare-urls)


5358-5358: Bare URL used

(MD034, no-bare-urls)


5362-5362: Bare URL used

(MD034, no-bare-urls)


5365-5365: Bare URL used

(MD034, no-bare-urls)


5369-5369: Bare URL used

(MD034, no-bare-urls)


5372-5372: Bare URL used

(MD034, no-bare-urls)


5376-5376: Bare URL used

(MD034, no-bare-urls)


5379-5379: Bare URL used

(MD034, no-bare-urls)


5383-5383: Bare URL used

(MD034, no-bare-urls)


5386-5386: Bare URL used

(MD034, no-bare-urls)


5390-5390: Bare URL used

(MD034, no-bare-urls)


5393-5393: Bare URL used

(MD034, no-bare-urls)


5397-5397: Bare URL used

(MD034, no-bare-urls)


5400-5400: Bare URL used

(MD034, no-bare-urls)


5404-5404: Bare URL used

(MD034, no-bare-urls)


5407-5407: Bare URL used

(MD034, no-bare-urls)


5411-5411: Bare URL used

(MD034, no-bare-urls)


5414-5414: Bare URL used

(MD034, no-bare-urls)


5418-5418: Bare URL used

(MD034, no-bare-urls)


5421-5421: Bare URL used

(MD034, no-bare-urls)


5425-5425: Bare URL used

(MD034, no-bare-urls)


5428-5428: Bare URL used

(MD034, no-bare-urls)

later.md

143-143: Bare URL used

(MD034, no-bare-urls)


149-149: Bare URL used

(MD034, no-bare-urls)


155-155: Bare URL used

(MD034, no-bare-urls)


161-161: Bare URL used

(MD034, no-bare-urls)


167-167: Bare URL used

(MD034, no-bare-urls)


173-173: Bare URL used

(MD034, no-bare-urls)


179-179: Bare URL used

(MD034, no-bare-urls)


185-185: Bare URL used

(MD034, no-bare-urls)


191-191: Bare URL used

(MD034, no-bare-urls)


197-197: Bare URL used

(MD034, no-bare-urls)


203-203: Bare URL used

(MD034, no-bare-urls)


209-209: Bare URL used

(MD034, no-bare-urls)


215-215: Bare URL used

(MD034, no-bare-urls)


221-221: Bare URL used

(MD034, no-bare-urls)


227-227: Bare URL used

(MD034, no-bare-urls)


233-233: Bare URL used

(MD034, no-bare-urls)


239-239: Bare URL used

(MD034, no-bare-urls)


245-245: Bare URL used

(MD034, no-bare-urls)


251-251: Bare URL used

(MD034, no-bare-urls)


257-257: Bare URL used

(MD034, no-bare-urls)


263-263: Bare URL used

(MD034, no-bare-urls)


269-269: Bare URL used

(MD034, no-bare-urls)


275-275: Bare URL used

(MD034, no-bare-urls)


281-281: Bare URL used

(MD034, no-bare-urls)


287-287: Bare URL used

(MD034, no-bare-urls)

⏰ 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: call-workflow-passing-data / build (24.3.0)
🔇 Additional comments (22)
v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/bootstrap/LICENSE (1)

1-22: LGTM: Correct MIT license inclusion

Keeping the upstream license verbatim is correct for distribution compliance.

v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/jquery-validation-unobtrusive/LICENSE.txt (1)

1-24: LGTM: License text should remain verbatim

Ignore grammar linters on license texts; keep exact upstream wording.

v2/rscg_examples/SG4MVC/nuget.txt (1)

1-1: LGTM: NuGet description matches docs

Text aligns with the SG4MVC entry; no changes needed.

v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/jquery/LICENSE.txt (1)

2-21: Keep license text verbatim; do not “fix” it.

This is upstream legal text. Please avoid applying linters/grammar fixes to it and keep it unchanged to honor licensing requirements. Looks good as added.

v2/rscg_examples/SG4MVC/src/MVCDemo/MVCDemo.csproj (2)

4-4: Sanity-check SG4MVC v0.9.4-beta compatibility with net9.0
Download and unzip sg4mvc.0.9.4-beta.nupkg and confirm its lib folder includes net9.0 or a compatible .NETStandard TFM—the .nuspec manifest isn’t available via the flatcontainer endpoint.


13-14: Validate the assembly attribute name Sg4Mvc.GenerateSg4Mvc. Ensure the namespace and type exactly match the attribute class provided by the referenced package—any typo or mismatch will cause MSBuild to silently ignore it.

v2/rscg_examples/SG4MVC/src/MVCDemo/wwwroot/lib/jquery-validation/LICENSE.md (1)

1-22: License file added correctly.

As with other licenses, keep the text unchanged and exclude from linting/formatting rules.

v2/rscg_examples/SG4MVC/src/MVCDemo/Models/ErrorViewModel.cs (1)

3-8: Simple and correct ErrorViewModel.

Matches the standard ASP.NET Core template and integrates cleanly with the Error view.

v2/rscg_examples/SG4MVC/src/MVCDemo.sln (1)

1-25: Solution file looks fine.

Single project wired for Debug/Release; nothing blocking.

v2/rscg_examples/SG4MVC/src/MVCDemo/Properties/launchSettings.json (1)

1-23: Dev profiles are good to go.

HTTP/HTTPS profiles with Development env are standard.

v2/rscg_examples/SG4MVC/readme.txt (1)

12-12: Verify internal wiki link resolves in generated site.
The repo contains no wiki directory under v2 or in the generated site sources—confirm your site generator imports or publishes the “Get Started” wiki at /wiki/1.-Get-Started, or adjust the relative path accordingly.

v2/rscg_examples/SG4MVC/description.json (1)

13-15: Confirm manifest path resolution. Verified that MVCDemo.csproj and Program.cs exist under v2/rscg_examples/SG4MVC/src/MVCDemo and that v2/book/examples/SG4MVC.html is present; ensure the consumer resolves the file-name-only entries (csprojDemo, csFiles) against the correct base path.

v2/rscg_examples/SG4MVC/src/MVCDemo/Views/Shared/_Layout.cshtml.css (1)

42-48: Footer/layout coupling check.

Absolute-positioned footer requires bottom spacing; confirmed body margin-bottom: 60px exists in site.css. Keep these in sync if you change footer height.

v2/book/pandocHTML.yaml (1)

232-232: Verify SG4MVC page builds with Pandoc
The file v2/book/examples/SG4MVC.html exists and contains the expected SG4MVC content; please run your Pandoc build pipeline (e.g. make html) to confirm it’s included without errors.

v2/rscg_examples/SG4MVC/src/MVCDemo/Views/_ViewStart.cshtml (1)

1-3: LGTM: layout wiring

Defaulting to "_Layout" here is standard and correct for the sample.

v2/RSCGExamplesData/GeneratorDataRec.json (1)

1302-1307: Validated SG4MVC entry: Category 36 exists, JSON valid, no duplicate IDs.

v2/rscg_examples/SG4MVC/src/MVCDemo/Views/_ViewImports.cshtml (1)

3-4: No changes required. The project correctly references the NuGet package ID SG4MVC and the runtime assembly Sg4Mvc (as seen by the <PackageReference Include="SG4MVC"…/> and the assembly attribute), so the @addTagHelper *, Sg4Mvc directive is already correct.

v2/book/list.html (1)

20-20: Visible count is correct

The displayed count (216) matches the actual number of entries (216).

v2/rscg_examples/SG4MVC/src/MVCDemo/Program.cs (1)

21-27: MapStaticAssets/WithStaticAssets supported on .NET 9.0
Project’s TFM is net9.0, which includes these extensions natively—no fallback to UseStaticFiles required.

README.md (1)

3-3: Verify the “Latest Update” date alignment.

Ensure all “Generated on” dates and the summary count reflect 2025-08-04 consistently.

v2/rscg_examples/SG4MVC/src/MVCDemo/Views/Shared/_Layout.cshtml (1)

16-18: Nice SG4MVC showcase.

Using @MVC.Home.Name and @MVC.Home.ActionNames.Index here clearly demonstrates the typed helpers.

v2/rscg_examples/SG4MVC/src/MVCDemo/Controllers/HomeController.cs (1)

7-31: Controller looks good.

Partial class and virtual actions align with SG4MVC patterns; Error action is correctly cached off.

StateMachine=33,
Console=34,
Async=35,
MVC=36,
Copy link

Choose a reason for hiding this comment

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

💡 Verification agent

❓ Verification inconclusive

New enum value MVC=36: looks good—verify downstream handling

Addition is consistent with numbering. Please confirm any switch/case mappings or UI filters that consume Category include MVC.

Run:

Expected: Any switch over Category also has a case for MVC; at least one reference to Category.MVC exists where needed.


🏁 Script executed:

#!/bin/bash
# Find switches on Category and ensure MVC is handled
rg -n --type=cs -C3 $'switch\\s*\\(' | rg -n --type=cs -C2 'Category\\.'
rg -n --type=cs 'Category\\.MVC' || true

Length of output: 113


🏁 Script executed:

#!/bin/bash
# Find all switch‐case labels for Category enum
rg -n --type=cs 'case\s+Category\.' -C2

# Find any direct references to the new MVC enum value
rg -n --type=cs 'Category\.MVC' -C2

Length of output: 79


Handle new Category.MVC in downstream logic
No occurrences of Category.MVC found in switch‐case statements or other code paths—add and verify case Category.MVC: in all switch blocks, update any UI filters, serialization, or mappings that consume Category to include the new MVC value.

🤖 Prompt for AI Agents
In v2/GeneratorData/Category.cs around line 41, a new enum value MVC was added
but downstream logic doesn't handle it; update every switch/case that consumes
Category to include a case Category.MVC, and ensure UI filters,
serialization/deserialization, mapping functions (DTOs, view models, database
converters), and any pattern-matching or default logic are updated to treat MVC
appropriately; add unit/integration tests covering Category.MVC paths and update
any enum-to-string or string-to-enum mappings and UI dropdowns/filters to
include the new label.

"source":"https://github.com/SG4MVC/SG4MVC"
},
"data":{
"goodFor":["Generate strong typed HTML helpers for ASP.NET MVC projects."],
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

Fix wording: “strong typed” → “strongly-typed”.

User-facing description; correct the grammar.

-      "goodFor":["Generate strong typed HTML helpers for ASP.NET MVC projects."],
+      "goodFor":["Generate strongly-typed HTML helpers for ASP.NET MVC projects."],
📝 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.

Suggested change
"goodFor":["Generate strong typed HTML helpers for ASP.NET MVC projects."],
"goodFor":["Generate strongly-typed HTML helpers for ASP.NET MVC projects."],
🤖 Prompt for AI Agents
v2/rscg_examples/SG4MVC/description.json around line 12: the phrase "Generate
strong typed HTML helpers for ASP.NET MVC projects." uses incorrect wording
"strong typed"; update it to "Generate strongly-typed HTML helpers for ASP.NET
MVC projects." so the description is grammatically correct and user-facing copy
is improved.

[![Nuget (with prereleases)](https://img.shields.io/nuget/vpre/SG4MVC?label=SG4MVC%20on%20nuget)](https://www.nuget.org/packages/SG4MVC)

## SG4MVC
SG4MVC is a source generator for ASP.NET MVC Core apps that creates strongly typed helpers that eliminate the use of literal strings in many places.
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

Use correct product name: “ASP.NET Core MVC.”

Minor but user-facing.

-SG4MVC is a source generator for ASP.NET MVC Core apps that creates strongly typed helpers that eliminate the use of literal strings in many places.  
+SG4MVC is a source generator for ASP.NET Core MVC apps that creates strongly typed helpers that eliminate the use of literal strings in many places.
📝 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.

Suggested change
SG4MVC is a source generator for ASP.NET MVC Core apps that creates strongly typed helpers that eliminate the use of literal strings in many places.
SG4MVC is a source generator for ASP.NET Core MVC apps that creates strongly typed helpers that eliminate the use of literal strings in many places.
🤖 Prompt for AI Agents
In v2/rscg_examples/SG4MVC/readme.txt around line 4, the product name is
incorrect ("ASP.NET MVC Core"); update the text to use the correct product name
"ASP.NET Core MVC" so the sentence reads: "SG4MVC is a source generator for
ASP.NET Core MVC apps that creates strongly typed helpers that eliminate the use
of literal strings in many places." Ensure spacing and punctuation are
preserved.


It is a re-implementation of [R4MVC](https://github.com/T4MVC/R4MVC) using source generators.

R4MVC runs as you build, and currently has only been tested on net6.0
Copy link

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Likely copy-paste: “R4MVC” vs “SG4MVC” and outdated .NET version.

This sentence should refer to SG4MVC and the supported/runtime-tested .NET version used by the demo (likely .NET 9.0 in this PR). Please update accordingly.

-R4MVC runs as you build, and currently has only been tested on net6.0
+SG4MVC runs as you build, and has been tested with .NET 9.0

Run to confirm the target framework used by the demo:


🏁 Script executed:

#!/bin/bash
rg -nP '<TargetFramework>.*</TargetFramework>' v2/rscg_examples/SG4MVC/src/MVCDemo/MVCDemo.csproj

Length of output: 147


Update project name and target framework in readme
In v2/rscg_examples/SG4MVC/readme.txt line 8, replace the outdated reference:

-R4MVC runs as you build, and currently has only been tested on net6.0
+SG4MVC runs as you build, and has been tested with .NET 9.0
📝 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.

Suggested change
R4MVC runs as you build, and currently has only been tested on net6.0
SG4MVC runs as you build, and has been tested with .NET 9.0
🤖 Prompt for AI Agents
In v2/rscg_examples/SG4MVC/readme.txt around line 8, update the outdated project
name and target framework: replace "R4MVC" with "SG4MVC" and change "net6.0" to
the current target framework (e.g., "net7.0"), so the sentence reads that SG4MVC
runs as you build and has been tested on the correct target framework.


### Use the following links to get started

* **Install** SG4MVC is distributed using using [NuGet](http://nuget.org). Visit the [Get Started page](../../wiki/1.-Get-Started)
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

Typo: duplicated word “using”.

User-facing docs—fix the repetition and prefer HTTPS.

-*   **Install** SG4MVC is distributed using using [NuGet](http://nuget.org). Visit the [Get Started page](../../wiki/1.-Get-Started)
+*   **Install** SG4MVC is distributed using [NuGet](https://nuget.org). Visit the [Get Started page](../../wiki/1.-Get-Started)
📝 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.

Suggested change
* **Install** SG4MVC is distributed using using [NuGet](http://nuget.org). Visit the [Get Started page](../../wiki/1.-Get-Started)
* **Install** SG4MVC is distributed using [NuGet](https://nuget.org). Visit the [Get Started page](../../wiki/1.-Get-Started)
🧰 Tools
🪛 LanguageTool

[grammar] ~39-~39: There might be a mistake here.
Context: ...Install SG4MVC is distributed using using NuGet. Visit the [G...

(QB_NEW_EN)

🤖 Prompt for AI Agents
In v2/rscg_examples/SG4MVC/readme.txt around line 39, the sentence contains a
duplicated word "using" and uses HTTP; remove the duplicate so it reads
"distributed using [NuGet]" and change the NuGet URL to HTTPS
(https://nuget.org) and optionally update the link target to the Get Started
page path to match the repo pattern.

Comment on lines +13 to +17
,{
"file": "MVCDemo/Program.cs",
"description": "File Program.cs \r\n>> dotnet run --project MVCDemo/MVCDemo.csproj ",
"pattern": "this is the code"
}
Copy link

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Replace placeholder pattern with a real marker in Program.cs.

"this is the code" likely won’t match; use a stable token.

-        "description": "File Program.cs \r\n>> dotnet run --project MVCDemo/MVCDemo.csproj ",
-        "pattern": "this is the code"
+        "description": "Open Program.cs. Build first: `dotnet build MVCDemo/MVCDemo.csproj` then run: `dotnet run --project MVCDemo/MVCDemo.csproj`.",
+        "pattern": "WebApplication.CreateBuilder"
📝 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.

Suggested change
,{
"file": "MVCDemo/Program.cs",
"description": "File Program.cs \r\n>> dotnet run --project MVCDemo/MVCDemo.csproj ",
"pattern": "this is the code"
}
,{
"file": "MVCDemo/Program.cs",
"description": "Open Program.cs. Build first: `dotnet build MVCDemo/MVCDemo.csproj` then run: `dotnet run --project MVCDemo/MVCDemo.csproj`.",
"pattern": "WebApplication.CreateBuilder"
}
🤖 Prompt for AI Agents
In v2/rscg_examples/SG4MVC/src/.tours/SG4MVC.tour around lines 13 to 17, the
tour step uses the placeholder pattern "this is the code" which won't reliably
match Program.cs; replace it with a stable, concrete marker that actually exists
in MVCDemo/Program.cs (for example a real method signature, a unique comment
token, or exact line snippet present in the file) so the tour can locate the
file fragment; update the "pattern" value to that exact token and ensure it is
specific and unlikely to change across builds.

Comment on lines +9 to +11
<ItemGroup>
<PackageReference Include="SG4MVC" Version="0.9.4-beta" />
</ItemGroup>
Copy link

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Mark source generator as private to avoid leaking transitive dependencies.

Source generators should generally not flow transitively. Add PrivateAssets and IncludeAssets.

-    <PackageReference Include="SG4MVC" Version="0.9.4-beta" />
+    <PackageReference Include="SG4MVC" Version="0.9.4-beta"
+                      PrivateAssets="all"
+                      IncludeAssets="runtime; build; native; contentfiles; analyzers; buildtransitive" />
📝 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.

Suggested change
<ItemGroup>
<PackageReference Include="SG4MVC" Version="0.9.4-beta" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="SG4MVC" Version="0.9.4-beta"
PrivateAssets="all"
IncludeAssets="runtime; build; native; contentfiles; analyzers; buildtransitive" />
</ItemGroup>
🤖 Prompt for AI Agents
In v2/rscg_examples/SG4MVC/src/MVCDemo/MVCDemo.csproj around lines 9–11 the
SG4MVC package reference is not marked private so its source-generator
dependencies can flow transitively; update the PackageReference to include
PrivateAssets="all" and an appropriate IncludeAssets value (e.g.
IncludeAssets="analyzers;build") so the generator does not leak into consuming
projects.

Comment on lines +19 to +24
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
<ul class="navbar-nav flex-grow-1">
Copy link

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Fix navbar toggler target and aria-controls to match a real element id.

Currently data-bs-target points to a class selector and aria-controls references a non-existent id, which hurts a11y and can break toggling.

Apply:

-<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
+<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent"
         aria-expanded="false" aria-label="Toggle navigation">
@@
-<div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
+<div class="navbar-collapse collapse d-sm-inline-flex justify-content-between" id="navbarSupportedContent">
📝 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.

Suggested change
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target=".navbar-collapse" aria-controls="navbarSupportedContent"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
<ul class="navbar-nav flex-grow-1">
<button class="navbar-toggler" type="button"
data-bs-toggle="collapse"
data-bs-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent"
aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse d-sm-inline-flex justify-content-between"
id="navbarSupportedContent">
<ul class="navbar-nav flex-grow-1">
🤖 Prompt for AI Agents
In v2/rscg_examples/SG4MVC/src/MVCDemo/Views/Shared/_Layout.cshtml around lines
19 to 24, the navbar toggler uses a class selector for data-bs-target and
references a non-existent id in aria-controls; update the button to use a real
id target (e.g., data-bs-target="#navbarSupportedContent" and
aria-controls="navbarSupportedContent") and add that id to the collapsing div
(change <div class="navbar-collapse collapse ..."> to include
id="navbarSupportedContent") so the toggler and aria attributes point to the
real element.

Comment on lines +1 to +2
/* Please see documentation at https://learn.microsoft.com/aspnet/core/client-side/bundling-and-minification
for details on configuring this project to bundle and minify static web assets. */
Copy link

Choose a reason for hiding this comment

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

⚠️ Potential issue

Remove BOM; it triggers the linter’s “Unknown type selector” at 1:1.

The file starts with a UTF-8 BOM before the comment; strip it to satisfy Biome.

-/* Please see documentation at https://learn.microsoft.com/aspnet/core/client-side/bundling-and-minification
+/* Please see documentation at https://learn.microsoft.com/aspnet/core/client-side/bundling-and-minification
📝 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.

Suggested change
/* Please see documentation at https://learn.microsoft.com/aspnet/core/client-side/bundling-and-minification
for details on configuring this project to bundle and minify static web assets. */
/* Please see documentation at https://learn.microsoft.com/aspnet/core/client-side/bundling-and-minification
for details on configuring this project to bundle and minify static web assets. */
🧰 Tools
🪛 Biome (2.1.2)

[error] 1-1: Unknown type selector is not allowed.

See MDN web docs for more details.
Consider replacing the unknown type selector with valid one.

(lint/correctness/noUnknownTypeSelector)

🤖 Prompt for AI Agents
In v2/rscg_examples/SG4MVC/src/MVCDemo/Views/Shared/_Layout.cshtml.css lines
1-2, the file contains a UTF-8 BOM before the comment which causes the linter
“Unknown type selector” at 1:1; remove the BOM and ensure the file is saved as
UTF-8 without BOM so the first character is the slash of the comment. Open the
file in your editor or use a tool to re-save/convert encoding to "UTF-8 (no
BOM)" (or strip the BOM bytes) and commit the cleaned file.

@ignatandrei ignatandrei merged commit 712d39a into main Aug 30, 2025
3 checks passed
@ignatandrei ignatandrei deleted the SG4MVC branch August 30, 2025 04:25
@coderabbitai coderabbitai bot mentioned this pull request Sep 2, 2025
@coderabbitai coderabbitai bot mentioned this pull request Oct 1, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants