Improve Platform website (#12876) - #12880
Conversation
|
Important Review skippedAuto incremental reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
WalkthroughThe Platform website removes Bswup and Butil documentation pages. Product links now target external websites. Brouter and Bmotion were added to product navigation. The change also updates site presentation, metadata, themes, builds, and server behavior. ChangesPlatform website improvements
Estimated code review effort: 5 (Critical) | ~120 minutes Suggested reviewers: Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
|
Too many files changed for review (221 files, 100 file limit). Bypass the limit by tagging |
|
@coderabbitai full-review |
|
|
|
@coderabbitai re-review |
|
✅ Action performedReview finished.
|
There was a problem hiding this comment.
Actionable comments posted: 14
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In
`@src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/DemosPage.razor`:
- Around line 147-148: Replace the unavailable Android and iOS–macOS anchor
elements in DemosPage with non-interactive elements, removing the role="link"
and aria-disabled attributes while preserving their disabled styling, titles,
icons, and labels until store URLs are available.
In
`@src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Home/HomePage.razor.scss`:
- Line 3: Update the imports in HomePage.razor.scss
(src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Home/HomePage.razor.scss,
lines 3-3) and Products.razor.scss
(src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Home/Products.razor.scss,
lines 1-1) to use partial names without leading underscores or the .scss
extension: import mixins and vars respectively.
In
`@src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates02GettingStartedPage.razor.cs`:
- Around line 45-46: Update the copied script text in the
Templates02GettingStartedPage content so the displayed NuGet URL uses the same
Bit.Boilerplate package identifier as the adjacent dotnet new install command,
replacing the outdated Boilerplate.Templates URL while preserving the command.
In
`@src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates03ProjectStructurePage.razor.scss`:
- Around line 37-39: Update .row-section-container to use flex-direction: column
within the existing `@include` sm breakpoint, so the project-structure columns
stack below 600px while preserving the current horizontal layout above that
breakpoint.
In
`@src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates04CreateProjectPage.razor.scss`:
- Around line 30-32: The .image rule currently inherits the Image mixin’s fixed
height and can distort API diagrams. Update .image to use automatic height
scaling and cap its width at the available container width; if the fixed 350px
container requires it, also constrain image height to account for vertical
margins while preserving the intrinsic aspect ratio.
In
`@src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates05RunProjectPage.razor.scss`:
- Around line 1-4: Update the imports in Templates05RunProjectPage.razor.scss
(lines 1-4) and Templates06Wiki.razor.scss (lines 1-3) to use configured partial
import paths without leading underscores or explicit .scss extensions; preserve
the existing imported styles and order.
- Around line 45-60: Configure Stylelint to recognize deep as an allowed
pseudo-element so the Blazor CSS-isolation selectors lint successfully. Preserve
the existing ::deep selectors in
src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates05RunProjectPage.razor.scss
lines 45-60, Templates06Wiki.razor.scss lines 46-48, and
Shared/NavigationButtons.razor.scss lines 39-41; only update the shared linter
configuration.
In
`@src/Websites/Platform/src/Bit.Websites.Platform.Client/Services/NavMenuService.cs`:
- Around line 10-15: Update NavMenuService.ToggleMenu to return Task, safely
return Task.CompletedTask when OnToggleMenu has no subscribers, and await the
subscribed handler result when present. Update Header.ToggleMenu to be
asynchronous and await NavMenuService.ToggleMenu.
In `@src/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/Header.razor`:
- Around line 91-104: Update the mobile Products disclosure around
ToggleMobileProducts so the aria-controls target remains in the DOM when
collapsed, hiding it while closed, or conditionally omit aria-controls whenever
the target is not rendered. Preserve the existing open-state behavior and
identifier consistency.
In
`@src/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/Header.razor.scss`:
- Line 339: Insert a blank line immediately before the comment describing the
180ms fade-out delay in Header.razor.scss, preserving the existing comment and
styles.
In
`@src/Websites/Platform/src/Bit.Websites.Platform.Client/Styles/abstracts/_mixins.scss`:
- Around line 93-96: Update the .primary mixin’s background gradient in the
visible CTA styles, replacing the light-blue `#1878fd` stop with the specified
darker `#0D71BF` value while preserving the existing gradient direction and other
styles.
In `@src/Websites/Platform/src/Bit.Websites.Platform.Client/Styles/app.scss`:
- Around line 285-298: Update the active theme selectors under
:root[bit-theme="dark"] and :root[bit-theme="light"] to use display: revert
instead of display: unset for the dark-theme, dark-image, light-theme, and
light-image classes, preserving each element’s native display type.
In
`@src/Websites/Platform/src/Bit.Websites.Platform.Server/Startup/Middlewares.cs`:
- Around line 160-174: Update the siteMapPerHost caching used by the sitemap.xml
handler so entries are restricted to configured trusted canonical hosts rather
than arbitrary values from context.Request.GetBaseUrl(). Reuse the application’s
existing host configuration symbols to validate or select the base URL before
caching, and preserve sitemap generation for approved hosts without retaining
unbounded entries for attacker-controlled hosts.
In `@src/Websites/Platform/src/Bit.Websites.Platform.Server/Startup/Services.cs`:
- Around line 76-81: Replace the unrestricted KnownNetworks.Clear and
KnownProxies.Clear configuration in UseForwardedHeaders with the CDN’s trusted
ranges via KnownIPNetworks or fixed proxy addresses via KnownProxies. Ensure
direct origin access is blocked so untrusted clients cannot supply
X-Forwarded-For and bypass the MessageSubmit rate limiter.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 599a7221-3f1b-4ea0-94b8-2c0b3aeeab6b
⛔ Files ignored due to path filters (10)
src/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/fonts/Consolas/woff2/Consolas.woff2is excluded by!**/*.woff2src/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/fonts/OpenSans/woff2/OpenSansBold.woff2is excluded by!**/*.woff2src/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/fonts/OpenSans/woff2/OpenSansRegular.woff2is excluded by!**/*.woff2src/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/fonts/OpenSans/woff2/OpenSansSemiBold.woff2is excluded by!**/*.woff2src/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/fast-forward.svgis excluded by!**/*.svgsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/home/hero-image-dark.svgis excluded by!**/*.svgsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/home/hero-image-light.svgis excluded by!**/*.svgsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/home/twitter-icon.svgis excluded by!**/*.svgsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/og-image.svgis excluded by!**/*.svgsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/sun.pngis excluded by!**/*.png
📒 Files selected for processing (106)
README.mdsrc/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/Pages/Home/HomePage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Bit.Websites.Platform.Client.csprojsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Extensions/IJSRuntimeExtension.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Extensions/IServiceCollectionExtensions.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/AboutUsPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Besql/Besql01OverviewPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Besql/Besql02InstallPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Besql/Besql03UsagePage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/ContactUsPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/ContactUsPage.razor.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/CustomerCarousel.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/CustomerCarousel.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/DemosPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/DemosPage.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Home/HomePage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Home/HomePage.razor.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Home/HomePage.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Home/Products.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Home/Products.razor.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Home/Products.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc01OverviewPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc01OverviewPage.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc02BenefitsPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc02BenefitsPage.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc03SpecsPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc03SpecsPage.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc04CustomizationsPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc04CustomizationsPage.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc05ComparisonPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc05ComparisonPage.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc06StatsPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc06StatsPage.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/LcncPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/NotFoundPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/PricingPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/PricingPage.razor.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/PricingPage.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates01OverviewPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates02GettingStartedPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates02GettingStartedPage.razor.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates02GettingStartedPage.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates02SamplesPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates02SamplesPage.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates03ProjectStructurePage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates03ProjectStructurePage.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates04CreateProjectPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates04CreateProjectPage.razor.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates04CreateProjectPage.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates05RunProjectPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates05RunProjectPage.razor.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates05RunProjectPage.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates06RunProjectPage.razor.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates06Wiki.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates06Wiki.razor.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates06Wiki.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates07Wiki.razor.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Program.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Scripts/app.tssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Services/HttpMessageHandlers/RetryDelegatingHandler.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Services/NavManuService.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Services/NavMenuService.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/AppAiChatPanel.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/AppErrorBoundary.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/Footer.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/Footer.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/Header.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/Header.razor.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/Header.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/MainLayout.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/MainLayout.razor.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/NavMenu.razor.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/NavigationButtons.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/NavigationButtons.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/PageOutlet.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/PageOutlet.razor.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/SiteMapUrls.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/Urls.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Styles/abstracts/_mixins.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Styles/abstracts/_vars.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Styles/app.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/compilerconfig.jsonsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/home/adminpanel.webpsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/home/balzorui-bg.webpsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/home/banner.webpsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/home/tech/dotnet-logo.webpsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/home/todotemplate.webpsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/home/twitter/1.webpsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/home/twitter/2.webpsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/home/twitter/3.webpsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/home/twitter/4.webpsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/home/twitter/5.webpsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/templates/blazor-wasm-target.webpsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/templates/debug-target.webpsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/templates/multi-startup.webpsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/templates/render-mode.webpsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/templates/swagger-todo.webpsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/robots.txtsrc/Websites/Platform/src/Bit.Websites.Platform.Server/Bit.Websites.Platform.Server.csprojsrc/Websites/Platform/src/Bit.Websites.Platform.Server/Components/App.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Server/Controllers/ContactUsController.cssrc/Websites/Platform/src/Bit.Websites.Platform.Server/Controllers/SupportPackageController.cssrc/Websites/Platform/src/Bit.Websites.Platform.Server/Program.cssrc/Websites/Platform/src/Bit.Websites.Platform.Server/Services/ScssCompilerService.cssrc/Websites/Platform/src/Bit.Websites.Platform.Server/Startup/Middlewares.cssrc/Websites/Platform/src/Bit.Websites.Platform.Server/Startup/Services.cs
💤 Files with no reviewable changes (13)
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc02BenefitsPage.razor.scss
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc06StatsPage.razor.scss
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc03SpecsPage.razor.scss
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates06RunProjectPage.razor.cs
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Services/NavManuService.cs
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc05ComparisonPage.razor.scss
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates07Wiki.razor.cs
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates02SamplesPage.razor.scss
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates02SamplesPage.razor
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc04CustomizationsPage.razor.scss
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc01OverviewPage.razor.scss
- src/Websites/Platform/src/Bit.Websites.Platform.Client/compilerconfig.json
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/Urls.cs
There was a problem hiding this comment.
Caution
Inline review comments failed to post. This is likely due to GitHub's internal server error or limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.
Actionable comments posted: 14
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In
`@src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/DemosPage.razor`:
- Around line 147-148: Replace the unavailable Android and iOS–macOS anchor
elements in DemosPage with non-interactive elements, removing the role="link"
and aria-disabled attributes while preserving their disabled styling, titles,
icons, and labels until store URLs are available.
In
`@src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Home/HomePage.razor.scss`:
- Line 3: Update the imports in HomePage.razor.scss
(src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Home/HomePage.razor.scss,
lines 3-3) and Products.razor.scss
(src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Home/Products.razor.scss,
lines 1-1) to use partial names without leading underscores or the .scss
extension: import mixins and vars respectively.
In
`@src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates02GettingStartedPage.razor.cs`:
- Around line 45-46: Update the copied script text in the
Templates02GettingStartedPage content so the displayed NuGet URL uses the same
Bit.Boilerplate package identifier as the adjacent dotnet new install command,
replacing the outdated Boilerplate.Templates URL while preserving the command.
In
`@src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates03ProjectStructurePage.razor.scss`:
- Around line 37-39: Update .row-section-container to use flex-direction: column
within the existing `@include` sm breakpoint, so the project-structure columns
stack below 600px while preserving the current horizontal layout above that
breakpoint.
In
`@src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates04CreateProjectPage.razor.scss`:
- Around line 30-32: The .image rule currently inherits the Image mixin’s fixed
height and can distort API diagrams. Update .image to use automatic height
scaling and cap its width at the available container width; if the fixed 350px
container requires it, also constrain image height to account for vertical
margins while preserving the intrinsic aspect ratio.
In
`@src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates05RunProjectPage.razor.scss`:
- Around line 1-4: Update the imports in Templates05RunProjectPage.razor.scss
(lines 1-4) and Templates06Wiki.razor.scss (lines 1-3) to use configured partial
import paths without leading underscores or explicit .scss extensions; preserve
the existing imported styles and order.
- Around line 45-60: Configure Stylelint to recognize deep as an allowed
pseudo-element so the Blazor CSS-isolation selectors lint successfully. Preserve
the existing ::deep selectors in
src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates05RunProjectPage.razor.scss
lines 45-60, Templates06Wiki.razor.scss lines 46-48, and
Shared/NavigationButtons.razor.scss lines 39-41; only update the shared linter
configuration.
In
`@src/Websites/Platform/src/Bit.Websites.Platform.Client/Services/NavMenuService.cs`:
- Around line 10-15: Update NavMenuService.ToggleMenu to return Task, safely
return Task.CompletedTask when OnToggleMenu has no subscribers, and await the
subscribed handler result when present. Update Header.ToggleMenu to be
asynchronous and await NavMenuService.ToggleMenu.
In `@src/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/Header.razor`:
- Around line 91-104: Update the mobile Products disclosure around
ToggleMobileProducts so the aria-controls target remains in the DOM when
collapsed, hiding it while closed, or conditionally omit aria-controls whenever
the target is not rendered. Preserve the existing open-state behavior and
identifier consistency.
In
`@src/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/Header.razor.scss`:
- Line 339: Insert a blank line immediately before the comment describing the
180ms fade-out delay in Header.razor.scss, preserving the existing comment and
styles.
In
`@src/Websites/Platform/src/Bit.Websites.Platform.Client/Styles/abstracts/_mixins.scss`:
- Around line 93-96: Update the .primary mixin’s background gradient in the
visible CTA styles, replacing the light-blue `#1878fd` stop with the specified
darker `#0D71BF` value while preserving the existing gradient direction and other
styles.
In `@src/Websites/Platform/src/Bit.Websites.Platform.Client/Styles/app.scss`:
- Around line 285-298: Update the active theme selectors under
:root[bit-theme="dark"] and :root[bit-theme="light"] to use display: revert
instead of display: unset for the dark-theme, dark-image, light-theme, and
light-image classes, preserving each element’s native display type.
In
`@src/Websites/Platform/src/Bit.Websites.Platform.Server/Startup/Middlewares.cs`:
- Around line 160-174: Update the siteMapPerHost caching used by the sitemap.xml
handler so entries are restricted to configured trusted canonical hosts rather
than arbitrary values from context.Request.GetBaseUrl(). Reuse the application’s
existing host configuration symbols to validate or select the base URL before
caching, and preserve sitemap generation for approved hosts without retaining
unbounded entries for attacker-controlled hosts.
In `@src/Websites/Platform/src/Bit.Websites.Platform.Server/Startup/Services.cs`:
- Around line 76-81: Replace the unrestricted KnownNetworks.Clear and
KnownProxies.Clear configuration in UseForwardedHeaders with the CDN’s trusted
ranges via KnownIPNetworks or fixed proxy addresses via KnownProxies. Ensure
direct origin access is blocked so untrusted clients cannot supply
X-Forwarded-For and bypass the MessageSubmit rate limiter.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 599a7221-3f1b-4ea0-94b8-2c0b3aeeab6b
⛔ Files ignored due to path filters (10)
src/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/fonts/Consolas/woff2/Consolas.woff2is excluded by!**/*.woff2src/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/fonts/OpenSans/woff2/OpenSansBold.woff2is excluded by!**/*.woff2src/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/fonts/OpenSans/woff2/OpenSansRegular.woff2is excluded by!**/*.woff2src/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/fonts/OpenSans/woff2/OpenSansSemiBold.woff2is excluded by!**/*.woff2src/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/fast-forward.svgis excluded by!**/*.svgsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/home/hero-image-dark.svgis excluded by!**/*.svgsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/home/hero-image-light.svgis excluded by!**/*.svgsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/home/twitter-icon.svgis excluded by!**/*.svgsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/og-image.svgis excluded by!**/*.svgsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/sun.pngis excluded by!**/*.png
📒 Files selected for processing (106)
README.mdsrc/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/Pages/Home/HomePage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Bit.Websites.Platform.Client.csprojsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Extensions/IJSRuntimeExtension.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Extensions/IServiceCollectionExtensions.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/AboutUsPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Besql/Besql01OverviewPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Besql/Besql02InstallPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Besql/Besql03UsagePage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/ContactUsPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/ContactUsPage.razor.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/CustomerCarousel.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/CustomerCarousel.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/DemosPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/DemosPage.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Home/HomePage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Home/HomePage.razor.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Home/HomePage.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Home/Products.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Home/Products.razor.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Home/Products.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc01OverviewPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc01OverviewPage.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc02BenefitsPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc02BenefitsPage.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc03SpecsPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc03SpecsPage.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc04CustomizationsPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc04CustomizationsPage.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc05ComparisonPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc05ComparisonPage.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc06StatsPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc06StatsPage.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/LcncPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/NotFoundPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/PricingPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/PricingPage.razor.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/PricingPage.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates01OverviewPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates02GettingStartedPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates02GettingStartedPage.razor.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates02GettingStartedPage.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates02SamplesPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates02SamplesPage.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates03ProjectStructurePage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates03ProjectStructurePage.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates04CreateProjectPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates04CreateProjectPage.razor.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates04CreateProjectPage.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates05RunProjectPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates05RunProjectPage.razor.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates05RunProjectPage.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates06RunProjectPage.razor.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates06Wiki.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates06Wiki.razor.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates06Wiki.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates07Wiki.razor.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Program.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Scripts/app.tssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Services/HttpMessageHandlers/RetryDelegatingHandler.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Services/NavManuService.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Services/NavMenuService.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/AppAiChatPanel.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/AppErrorBoundary.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/Footer.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/Footer.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/Header.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/Header.razor.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/Header.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/MainLayout.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/MainLayout.razor.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/NavMenu.razor.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/NavigationButtons.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/NavigationButtons.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/PageOutlet.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/PageOutlet.razor.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/SiteMapUrls.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/Urls.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Styles/abstracts/_mixins.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Styles/abstracts/_vars.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Styles/app.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/compilerconfig.jsonsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/home/adminpanel.webpsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/home/balzorui-bg.webpsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/home/banner.webpsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/home/tech/dotnet-logo.webpsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/home/todotemplate.webpsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/home/twitter/1.webpsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/home/twitter/2.webpsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/home/twitter/3.webpsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/home/twitter/4.webpsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/home/twitter/5.webpsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/templates/blazor-wasm-target.webpsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/templates/debug-target.webpsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/templates/multi-startup.webpsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/templates/render-mode.webpsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/images/templates/swagger-todo.webpsrc/Websites/Platform/src/Bit.Websites.Platform.Client/wwwroot/robots.txtsrc/Websites/Platform/src/Bit.Websites.Platform.Server/Bit.Websites.Platform.Server.csprojsrc/Websites/Platform/src/Bit.Websites.Platform.Server/Components/App.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Server/Controllers/ContactUsController.cssrc/Websites/Platform/src/Bit.Websites.Platform.Server/Controllers/SupportPackageController.cssrc/Websites/Platform/src/Bit.Websites.Platform.Server/Program.cssrc/Websites/Platform/src/Bit.Websites.Platform.Server/Services/ScssCompilerService.cssrc/Websites/Platform/src/Bit.Websites.Platform.Server/Startup/Middlewares.cssrc/Websites/Platform/src/Bit.Websites.Platform.Server/Startup/Services.cs
💤 Files with no reviewable changes (13)
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc02BenefitsPage.razor.scss
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc06StatsPage.razor.scss
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc03SpecsPage.razor.scss
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates06RunProjectPage.razor.cs
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Services/NavManuService.cs
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc05ComparisonPage.razor.scss
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates07Wiki.razor.cs
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates02SamplesPage.razor.scss
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates02SamplesPage.razor
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc04CustomizationsPage.razor.scss
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Lcnc/Lcnc01OverviewPage.razor.scss
- src/Websites/Platform/src/Bit.Websites.Platform.Client/compilerconfig.json
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/Urls.cs
🛑 Comments failed to post (4)
src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates03ProjectStructurePage.razor.scss (1)
37-39: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash set -e file='src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates03ProjectStructurePage.razor.scss' printf '%s\n' '--- target file ---' cat -n "$file" printf '%s\n' '--- related markup and styles ---' base="${file%.razor.scss}" for candidate in "${base}.razor" "${base}.razor.cs"; do if [ -f "$candidate" ]; then printf '\n--- %s ---\n' "$candidate" cat -n "$candidate" fi done printf '%s\n' '--- selector references ---' rg -n -C 3 'row-section-container|Templates03ProjectStructurePage' src/Websites/Platform/src/Bit.Websites.Platform.ClientRepository: bitfoundation/bitplatform
Length of output: 17600
🏁 Script executed:
#!/bin/bash set -e printf '%s\n' '--- referenced mixins and media queries ---' rg -n -C 8 '(`@mixin`[[:space:]]+(SectionCard|SectionCardText|Image|PageContainer)|\$.*(break|mobile|tablet)|`@media`)' \ src/Websites/Platform/src/Bit.Websites.Platform.Client/Styles \ src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates \ | head -n 240 printf '%s\n' '--- analogous responsive page styles ---' rg -l '`@media`|MediaQuery|flex-direction:[[:space:]]*column' \ src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates \ | head -n 40Repository: bitfoundation/bitplatform
Length of output: 17794
🏁 Script executed:
#!/bin/bash set -e media='src/Websites/Platform/src/Bit.Websites.Platform.Client/Styles/abstracts/_media-queries.scss' mixins='src/Websites/Platform/src/Bit.Websites.Platform.Client/Styles/abstracts/_mixins.scss' printf '%s\n' '--- breakpoint definitions ---' cat -n "$media" | sed -n '1,105p' printf '%s\n' '--- relevant mixins ---' cat -n "$mixins" | sed -n '34,75p;129,145p' printf '%s\n' '--- box-sizing and section-card overrides ---' rg -n -C 3 'box-sizing|section-card|row-section-container|\\.image[[:space:]]*\\{' \ src/Websites/Platform/src/Bit.Websites.Platform.Client \ -g '*.scss' -g '*.css' | head -n 240Repository: bitfoundation/bitplatform
Length of output: 4471
Stack the project-structure columns below 600px.
The fixed
300pximage and text column can exceed the card width while.row-section-containerremains horizontal. Use the existing@include smbreakpoint to setflex-direction: column.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates03ProjectStructurePage.razor.scss` around lines 37 - 39, Update .row-section-container to use flex-direction: column within the existing `@include` sm breakpoint, so the project-structure columns stack below 600px while preserving the current horizontal layout above that breakpoint.src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates04CreateProjectPage.razor.scss (1)
30-32: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash set -eu printf '%s\n' '--- target files ---' git ls-files | rg 'Templates04CreateProjectPage\.razor\.scss$|.*\.scss$' | head -80 printf '%s\n' '--- target file ---' target='src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates04CreateProjectPage.razor.scss' if [ -f "$target" ]; then cat -n "$target" else printf 'target not found\n' fi printf '%s\n' '--- Image mixin definitions and uses ---' rg -n -C 5 '`@mixin`[[:space:]]+Image|`@include`[[:space:]]+Image|api-image-container|Templates04CreateProjectPage' srcRepository: bitfoundation/bitplatform
Length of output: 25912
🏁 Script executed:
#!/bin/bash set -eu target='src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates04CreateProjectPage.razor.scss' printf '%s\n' '--- mixin and relevant selectors ---' cat -n src/Websites/Platform/src/Bit.Websites.Platform.Client/Styles/abstracts/_mixins.scss | sed -n '125,145p' cat -n "$target" | sed -n '24,60p' printf '%s\n' '--- API image assets ---' rg --files src/Websites/Platform/src/Bit.Websites.Platform.Client | rg 'api-(integrated|standalone)\.webp$' | while IFS= read -r f; do file "$f" done printf '%s\n' '--- all references to the API container and image class ---' rg -n -C 3 'api-image-container|class="image"|api-(integrated|standalone)\.webp' src/Websites/Platform/src/Bit.Websites.Platform.Client printf '%s\n' '--- deterministic WebP dimension probe ---' python3 - <<'PY' from pathlib import Path import struct def dimensions(path): data = Path(path).read_bytes() assert data[:4] == b'RIFF' and data[8:12] == b'WEBP' kind = data[12:16] if kind == b'VP8 ': # VP8 frame header starts at chunk payload offset 10. if data[23:26] != b'\x9d\x01\x2a': raise ValueError(f'unsupported VP8 header in {path}') return struct.unpack_from('<HH', data, 26) if kind == b'VP8X': w = 1 + int.from_bytes(data[24:27], 'little') h = 1 + int.from_bytes(data[27:30], 'little') return w, h if kind == b'VP8L': b0, b1, b2, b3, b4 = data[21:26] if b0 != 0x2f: raise ValueError(f'unsupported VP8L header in {path}') w = 1 + (((b2 & 0x3f) << 16) | (b1 << 8) | b0) # not used unless this branch is hit raise ValueError(f'VP8L parser not needed for {path}') raise ValueError(f'unsupported WebP chunk {kind!r} in {path}') for name in ('api-integrated.webp', 'api-standalone.webp'): matches = list(Path('src').rglob(name)) for path in matches: try: print(path, dimensions(path)) except Exception as e: print(path, e) PYRepository: bitfoundation/bitplatform
Length of output: 1350
🏁 Script executed:
#!/bin/bash set -eu printf '%s\n' '--- API image references and assets ---' rg -n -C 3 'api-image-container|class="image"|api-(integrated|standalone)\.webp' src/Websites/Platform/src/Bit.Websites.Platform.Client printf '%s\n' '--- asset paths ---' rg --files src/Websites/Platform/src/Bit.Websites.Platform.Client | rg 'api-(integrated|standalone)\.webp$' printf '%s\n' '--- deterministic WebP dimension and aspect-ratio probe ---' python3 - <<'PY' from pathlib import Path import struct def dimensions(path): data = Path(path).read_bytes() if data[:4] != b'RIFF' or data[8:12] != b'WEBP': raise ValueError('not a WebP file') kind = data[12:16] if kind == b'VP8 ': if data[23:26] != b'\x9d\x01\x2a': raise ValueError('unsupported VP8 header') return struct.unpack_from('<HH', data, 26) if kind == b'VP8X': return ( 1 + int.from_bytes(data[24:27], 'little'), 1 + int.from_bytes(data[27:30], 'little'), ) raise ValueError(f'unsupported WebP chunk {kind!r}') for path in sorted(Path('src/Websites/Platform/src/Bit.Websites.Platform.Client').rglob('api-*.webp')): w, h = dimensions(path) print(f'{path}: {w}x{h}, intrinsic ratio={w/h:.6f}, box ratio at 600x297={600/297:.6f}') PYRepository: bitfoundation/bitplatform
Length of output: 10192
Preserve the API diagram aspect ratio.
Imagesetsheight: 85%, while.imageoverrides only the width. The API assets have intrinsic ratios of 1.79 and 2.21, so the resulting 600px × 297px boxes distort both diagrams. Setheight: autoand addmax-width: 100%. If the 350px container remains fixed, also constrain the image height after accounting for its vertical margins.🧰 Tools
🪛 Stylelint (17.14.0)
[error] 32-32: Expected empty line before declaration (declaration-empty-line-before)
(declaration-empty-line-before)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates04CreateProjectPage.razor.scss` around lines 30 - 32, The .image rule currently inherits the Image mixin’s fixed height and can distort API diagrams. Update .image to use automatic height scaling and cap its width at the available container width; if the fixed 350px container requires it, also constrain image height to account for vertical margins while preserving the intrinsic aspect ratio.src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates05RunProjectPage.razor.scss (2)
1-4: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Fix the new SCSS import lint errors.
Stylelint rejects partial filenames with leading underscores and explicit
.scssextensions. Use the configured import form so these new files pass linting.
src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates05RunProjectPage.razor.scss#L1-L4: Remove the leading underscores and.scssextensions from each import.src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates06Wiki.razor.scss#L1-L3: Remove the leading underscores and.scssextensions from each import.🧰 Tools
🪛 Stylelint (17.14.0)
[error] 1-1: Unexpected leading underscore in imported partial name (scss/load-no-partial-leading-underscore)
(scss/load-no-partial-leading-underscore)
[error] 2-2: Unexpected leading underscore in imported partial name (scss/load-no-partial-leading-underscore)
(scss/load-no-partial-leading-underscore)
[error] 3-3: Unexpected leading underscore in imported partial name (scss/load-no-partial-leading-underscore)
(scss/load-no-partial-leading-underscore)
[error] 4-4: Unexpected leading underscore in imported partial name (scss/load-no-partial-leading-underscore)
(scss/load-no-partial-leading-underscore)
[error] 1-1: Unexpected extension ".scss" in
@import(scss/load-partial-extension)(scss/load-partial-extension)
[error] 2-2: Unexpected extension ".scss" in
@import(scss/load-partial-extension)(scss/load-partial-extension)
[error] 3-3: Unexpected extension ".scss" in
@import(scss/load-partial-extension)(scss/load-partial-extension)
[error] 4-4: Unexpected extension ".scss" in
@import(scss/load-partial-extension)(scss/load-partial-extension)
📍 Affects 2 files
src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates05RunProjectPage.razor.scss#L1-L4(this comment)src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates06Wiki.razor.scss#L1-L3🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates05RunProjectPage.razor.scss` around lines 1 - 4, Update the imports in Templates05RunProjectPage.razor.scss (lines 1-4) and Templates06Wiki.razor.scss (lines 1-3) to use configured partial import paths without leading underscores or explicit .scss extensions; preserve the existing imported styles and order.Source: Linters/SAST tools
45-60: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Configure Stylelint for Blazor
::deepselectors.The added CSS-isolation selectors produce Stylelint errors. Allow
deepas a pseudo-element in the Stylelint configuration. Do not replace these selectors with standard CSS selectors because Blazor CSS isolation requires::deepfor descendant styling.
src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates05RunProjectPage.razor.scss#L45-L60: Keep the CSS-isolation selectors after updating the linter configuration.src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates06Wiki.razor.scss#L46-L48: Keep the CSS-isolation selector after updating the linter configuration.src/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/NavigationButtons.razor.scss#L39-L41: Keep the CSS-isolation selector after updating the linter configuration.🧰 Tools
🪛 Stylelint (17.14.0)
[error] 45-45: Unknown pseudo-element selector "::deep" (selector-pseudo-element-no-unknown)
(selector-pseudo-element-no-unknown)
[error] 50-50: Unknown pseudo-element selector "::deep" (selector-pseudo-element-no-unknown)
(selector-pseudo-element-no-unknown)
📍 Affects 3 files
src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates05RunProjectPage.razor.scss#L45-L60(this comment)src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates06Wiki.razor.scss#L46-L48src/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/NavigationButtons.razor.scss#L39-L41🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates05RunProjectPage.razor.scss` around lines 45 - 60, Configure Stylelint to recognize deep as an allowed pseudo-element so the Blazor CSS-isolation selectors lint successfully. Preserve the existing ::deep selectors in src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates05RunProjectPage.razor.scss lines 45-60, Templates06Wiki.razor.scss lines 46-48, and Shared/NavigationButtons.razor.scss lines 39-41; only update the shared linter configuration.Source: Linters/SAST tools
|
@coderabbitai full-review |
|
|
|
@coderabbitai re-review |
|
✅ Action performedReview finished.
|
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In
`@src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates04CreateProjectPage.razor.scss`:
- Line 32: Insert an empty line immediately after the `@include` Image;
declaration and before the explanatory comment in the relevant SCSS rule.
In
`@src/Websites/Platform/src/Bit.Websites.Platform.Server/Startup/Middlewares.cs`:
- Around line 176-179: Make sitemap cache admission atomic in the code
surrounding siteMapPerHost by synchronizing the Count check and TryAdd operation
with a single shared lock, ensuring concurrent requests cannot exceed
maxCachedHosts. Keep the existing admission condition and siteMapPerHost entries
unchanged.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 35239238-c2ba-47fe-bc0c-6d8726ce9fa7
📒 Files selected for processing (16)
src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/DemosPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Home/HomePage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Home/HomePage.razor.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Home/HomePage.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates02GettingStartedPage.razor.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates03ProjectStructurePage.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates04CreateProjectPage.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates04CreateProjectPage.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Services/NavMenuService.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/Header.razorsrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/Header.razor.cssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/Header.razor.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Styles/abstracts/_mixins.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Client/Styles/app.scsssrc/Websites/Platform/src/Bit.Websites.Platform.Server/Startup/Middlewares.cssrc/Websites/Platform/src/Bit.Websites.Platform.Server/Startup/Services.cs
🚧 Files skipped from review as they are similar to previous changes (12)
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Styles/abstracts/_mixins.scss
- src/Websites/Platform/src/Bit.Websites.Platform.Server/Startup/Services.cs
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/Header.razor
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/DemosPage.razor
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Home/HomePage.razor.scss
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Styles/app.scss
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates04CreateProjectPage.razor
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Home/HomePage.razor
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/Header.razor.scss
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Services/NavMenuService.cs
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Shared/Header.razor.cs
- src/Websites/Platform/src/Bit.Websites.Platform.Client/Pages/Templates/Templates03ProjectStructurePage.razor.scss
closes #12876
Summary by CodeRabbit