Skip to content

Specify mirroed files in bit Boilerplate (#12838) - #12839

Open
yasmoradi wants to merge 1 commit into
bitfoundation:developfrom
yasmoradi:mirror
Open

Specify mirroed files in bit Boilerplate (#12838)#12839
yasmoradi wants to merge 1 commit into
bitfoundation:developfrom
yasmoradi:mirror

Conversation

@yasmoradi

@yasmoradi yasmoradi commented Aug 6, 2026

Copy link
Copy Markdown
Member

closes #12838

Summary by CodeRabbit

  • New Features

    • Admin navigation now supports tenant selection when multitenancy is enabled.
    • Dashboard and catalog options respect tenant-specific authorization requirements.
    • Admin navigation continues to work without tenant selection when multitenancy is disabled.
  • Documentation

    • Added guidance to keep shared web, desktop, mobile, and platform-specific template components synchronized.
    • Improved development-tool configuration and documented mirrored implementations across supported platforms.

@coderabbitai

coderabbitai Bot commented Aug 6, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: b294d494-cf95-4b16-9367-26ef263e6a23

📥 Commits

Reviewing files that changed from the base of the PR and between c94c4c9 and 5263fa9.

📒 Files selected for processing (45)
  • src/Templates/Boilerplate/Bit.Boilerplate/.claude/settings.json
  • src/Templates/Boilerplate/Bit.Boilerplate/AGENTS.md
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/Common/LoadingComponent.razor
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/Layout/NavBar.razor
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/_Imports.razor
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Infrastructure/Services/MauiDeviceCoordinator.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Infrastructure/Services/MauiExceptionHandler.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Infrastructure/Services/MauiLocalHttpServer.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Infrastructure/Services/MauiStorageService.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Infrastructure/Services/MauiTelemetryContext.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Infrastructure/Services/MauiWebAuthnService.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/MauiProgram.Services.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/Android/Extensions/IAndroidServiceCollectionExtensions.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/Android/Services/AndroidPushNotificationService.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/MacCatalyst/AppDelegate.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/MacCatalyst/Extensions/IMacServiceCollectionExtensions.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/MacCatalyst/Extensions/NSDataExtensions.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/MacCatalyst/Program.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/MacCatalyst/Services/AppUNUserNotificationCenterDelegate.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/MacCatalyst/Services/MacCatalystPushNotificationService.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/Windows/Extensions/IWindowsServiceCollectionExtensions.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/Windows/Services/WindowsPushNotificationService.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/iOS/AppDelegate.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/iOS/Extensions/IIosServiceCollectionExtensions.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/iOS/Extensions/NSDataExtensions.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/iOS/Program.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/iOS/Services/AppUNUserNotificationCenterDelegate.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/iOS/Services/iOSPushNotificationService.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/_Imports.razor
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/wwwroot/index.html
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/Components/AppBswupProgressBar.razor
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/_Imports.razor
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/wwwroot/index.html
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/wwwroot/service-worker.js
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/wwwroot/service-worker.published.js
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Windows/Infrastructure/Services/WindowsDeviceCoordinator.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Windows/Infrastructure/Services/WindowsExceptionHandler.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Windows/Infrastructure/Services/WindowsLocalHttpServer.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Windows/Infrastructure/Services/WindowsPushNotificationService.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Windows/Infrastructure/Services/WindowsStorageService.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Windows/Infrastructure/Services/WindowsTelemetryContext.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Windows/Infrastructure/Services/WindowsWebAuthnService.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Windows/Program.Services.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Windows/_Imports.razor
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Web/Components/App.razor

Walkthrough

The boilerplate adds mirror-maintenance guidance across shared, web, MAUI, Windows, server, and platform files. It also updates Claude settings and changes Admin navigation rendering for multitenant and non-multitenant modules.

Changes

Mirror maintenance guidance

Layer / File(s) Summary
Mirror convention and shared host references
src/Templates/Boilerplate/Bit.Boilerplate/AGENTS.md, src/Templates/Boilerplate/Bit.Boilerplate/src/Client/..., src/Templates/Boilerplate/Bit.Boilerplate/src/Server/...
The boilerplate documents [mirror] handling and adds synchronization references for imports, host pages, loading content, and Bswup markup.
Platform service and registration mirrors
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Infrastructure/..., src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/..., src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Windows/Infrastructure/..., src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Windows/Program.Services.cs
MAUI and Windows service files identify synchronized implementations and registration counterparts.
Mobile platform implementation mirrors
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/Android/..., src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/iOS/..., src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/MacCatalyst/...
Platform entry points, delegates, extensions, and push notification services identify their corresponding implementations.
Web service-worker mirrors
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/wwwroot/service-worker*.js
Development and published service workers identify synchronized notification handlers.

Admin navigation branching

Layer / File(s) Summary
Tenant-aware Admin navigation
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/Layout/NavBar.razor
Multitenant Admin modules use tenant-selection authorization. Non-multitenant Admin modules render dashboard, category, and product options without that wrapper.

Claude project settings

Layer / File(s) Summary
MCP server configuration
src/Templates/Boilerplate/Bit.Boilerplate/.claude/settings.json
The settings enable project MCP servers, set DOTNET_NOLOGO, and allow four MCP integrations.

Estimated code review effort: 2 (Simple) | ~10 minutes

Suggested reviewers: copilot

Poem

A rabbit checks each mirrored line,
Keeps MAUI and web designs in time.
Admin paths now choose their way,
While MCP tools hop into play.
One tidy burrow, aligned and bright.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning The Claude settings and AGENTS.md changes are unrelated to documenting mirrored files and appear out of scope. Remove the unrelated Claude settings and AGENTS.md changes, or link them to a separate objective or issue.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly describes the main change: documenting mirrored files in the bit Boilerplate.
Linked Issues check ✅ Passed The PR adds mirror-reference comments across the bit Boilerplate, directly addressing issue #12838.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

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

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

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

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 addresses issue #12838 by introducing consistent [mirror] markers across the Bit.Boilerplate template, making it explicit which files must be kept in sync when making parallel changes across platforms/projects.

Changes:

  • Added [mirror] comments to many Boilerplate files to document their mirrored counterparts and synchronization intent.
  • Updated the client host pages (index.html) to document mirrored head/script/style and loading/progress markup responsibilities.
  • Adjusted the Admin module NavBar template logic to differentiate multitenant vs non-multitenant Admin navigation rendering.

Reviewed changes

Copilot reviewed 45 out of 45 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Web/Components/App.razor Adds [mirror] note pointing to client host pages to keep head/script/style in sync.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Windows/Program.Services.cs Adds [mirror] note linking DI/logging/Otel setup with MAUI equivalent.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Windows/Infrastructure/Services/WindowsWebAuthnService.cs Adds [mirror] note linking WebAuthn loopback flow with MAUI equivalent.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Windows/Infrastructure/Services/WindowsTelemetryContext.cs Adds [mirror] note linking telemetry context with MAUI equivalent.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Windows/Infrastructure/Services/WindowsStorageService.cs Adds [mirror] note linking storage semantics with MAUI equivalent.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Windows/Infrastructure/Services/WindowsPushNotificationService.cs Adds [mirror] note linking Windows push notification stub with MAUI Windows equivalent.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Windows/Infrastructure/Services/WindowsLocalHttpServer.cs Adds [mirror] note linking loopback server behavior with MAUI equivalent.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Windows/Infrastructure/Services/WindowsExceptionHandler.cs Adds [mirror] note linking exception handler with MAUI equivalent.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Windows/Infrastructure/Services/WindowsDeviceCoordinator.cs Adds [mirror] note linking device coordinator behavior with MAUI equivalent.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Windows/_Imports.razor Adds [mirror] note linking _Imports alignment across client projects.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/wwwroot/service-worker.published.js Adds [mirror] note linking handlers with non-published service worker.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/wwwroot/service-worker.js Adds [mirror] note linking handlers with published service worker.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/wwwroot/index.html Adds consolidated [mirror] notes for host page head/loading/progress markup sync points.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/Components/AppBswupProgressBar.razor Adds [mirror] note linking progress bar markup/CSS with host page.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/_Imports.razor Adds [mirror] note linking _Imports alignment across client projects.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/wwwroot/index.html Adds consolidated [mirror] notes for host page head/loading markup sync points.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/Windows/Services/WindowsPushNotificationService.cs Adds [mirror] note linking MAUI Windows push notification stub with Windows client equivalent.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/Windows/Extensions/IWindowsServiceCollectionExtensions.cs Adds [mirror] note linking per-platform DI registrations across MAUI platforms.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/MacCatalyst/Services/MacCatalystPushNotificationService.cs Adds [mirror] note linking push notification flow with Android/iOS counterparts.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/MacCatalyst/Services/AppUNUserNotificationCenterDelegate.cs Adds [mirror] note linking UNUserNotificationCenter delegate with iOS counterpart.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/MacCatalyst/Program.cs Adds [mirror] note linking entry point with iOS counterpart.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/MacCatalyst/Extensions/NSDataExtensions.cs Adds [mirror] note linking NSData extensions with iOS counterpart.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/MacCatalyst/Extensions/IMacServiceCollectionExtensions.cs Adds [mirror] note linking per-platform DI registrations across MAUI platforms.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/MacCatalyst/AppDelegate.cs Adds [mirror] note linking AppDelegate with iOS counterpart.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/iOS/Services/iOSPushNotificationService.cs Adds [mirror] note linking push notification flow with Android/MacCatalyst counterparts.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/iOS/Services/AppUNUserNotificationCenterDelegate.cs Adds [mirror] note linking UNUserNotificationCenter delegate with MacCatalyst counterpart.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/iOS/Program.cs Adds [mirror] note linking entry point with MacCatalyst counterpart.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/iOS/Extensions/NSDataExtensions.cs Adds [mirror] note linking NSData extensions with MacCatalyst counterpart.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/iOS/Extensions/IIosServiceCollectionExtensions.cs Adds [mirror] note linking per-platform DI registrations across MAUI platforms.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/iOS/AppDelegate.cs Adds [mirror] note linking AppDelegate with MacCatalyst counterpart.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/Android/Services/AndroidPushNotificationService.cs Adds [mirror] note linking push notification flow with iOS/MacCatalyst counterparts.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Platforms/Android/Extensions/IAndroidServiceCollectionExtensions.cs Adds [mirror] note linking per-platform DI registrations across MAUI platforms.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/MauiProgram.Services.cs Adds [mirror] note linking DI/logging/Otel setup with Windows client equivalent.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Infrastructure/Services/MauiWebAuthnService.cs Adds [mirror] note linking WebAuthn loopback flow with Windows client equivalent.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Infrastructure/Services/MauiTelemetryContext.cs Adds [mirror] note linking telemetry context with Windows client equivalent.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Infrastructure/Services/MauiStorageService.cs Adds [mirror] note linking storage semantics with Windows client equivalent.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Infrastructure/Services/MauiLocalHttpServer.cs Adds [mirror] note linking loopback server behavior with Windows client equivalent.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Infrastructure/Services/MauiExceptionHandler.cs Adds [mirror] note linking exception handler with Windows client equivalent.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/Infrastructure/Services/MauiDeviceCoordinator.cs Adds [mirror] note linking device coordinator behavior with Windows client equivalent.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/_Imports.razor Adds [mirror] note linking _Imports alignment across client projects.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/Layout/NavBar.razor Updates template conditions to render Admin nav appropriately for multitenant vs non-multitenant setups.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/Common/LoadingComponent.razor Replaces prior note with [mirror] comment pointing to mirrored host pages.
src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/_Imports.razor Adds [mirror] note linking _Imports alignment across client projects.
src/Templates/Boilerplate/Bit.Boilerplate/AGENTS.md Documents the required workflow for keeping [mirror] file sets synchronized.
src/Templates/Boilerplate/Bit.Boilerplate/.claude/settings.json Adds Claude project settings and MCP permissions for the Boilerplate template.

@@ -1,3 +1,6 @@
// [mirror] not implemented push notification service of the windows targets - keep in sync with:
@@ -1,3 +1,6 @@
// [mirror] not implemented push notification service of the windows targets - keep in sync with:
- **Use OData Query Options**: Leverage `[EnableQuery]` and `ODataQueryOptions` for efficient data filtering and pagination.
- **Follow Mapperly Conventions**: Use **partial static classes and extension methods** with Mapperly for high-performance object mapping.
- **Handle Concurrency**: Always use `long Version` for optimistic concurrency control in update and delete operations.
- **Respect `[mirror]` Comments**: Some files carry (near) identical logic under different extensions or projects. Each of them starts with a `[mirror]` comment listing its counterparts. Whenever you change such a file you **MUST** open every file that comment names and apply the same change there, or state explicitly why it does not apply. Run `Grep` for `[mirror]` to see the full set.
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.

bit Boilerplate doesn't specify mirrored files

2 participants