Skip to content

Use source generator to bind configuration in bit Boilerplate (#12679)#12680

Merged
yasmoradi merged 1 commit into
bitfoundation:developfrom
yasmoradi:12679
Jul 17, 2026
Merged

Use source generator to bind configuration in bit Boilerplate (#12679)#12680
yasmoradi merged 1 commit into
bitfoundation:developfrom
yasmoradi:12679

Conversation

@yasmoradi

@yasmoradi yasmoradi commented Jul 17, 2026

Copy link
Copy Markdown
Member

closes #12679

Summary by CodeRabbit

  • New Features

    • Added optional custom domains for tenants, with format validation and duplicate-domain protection.
    • Tenant domains now appear in tenant forms, management tables, and tenant cards.
    • Requests can resolve tenants using configured custom domains or subdomains.
    • Added Playwright tooling to the boilerplate template for UI validation.
  • Bug Fixes

    • Improved configuration handling for logging, forwarded headers, caching, and nullable unique fields.
    • Tenant and identity data validation now handles nullable values more consistently.
  • Documentation

    • Updated project run instructions to use watch mode and Playwright-based UI checks.

@coderabbitai

coderabbitai Bot commented Jul 17, 2026

Copy link
Copy Markdown

Review Change Stack

Walkthrough

The boilerplate adds tenant custom-domain support across contracts, validation, persistence, resolution, UI, and localization. It also introduces dynamic configuration binding, refactors nullable database indexes, moves forwarded-header binding to configuration sections, and adds Playwright MCP tooling.

Changes

Tenant custom-domain support

Layer / File(s) Summary
Tenant domain contracts and persistence
src/.../Tenant.cs, src/.../TenantDto.cs, src/.../TenantConfiguration.cs
Tenant entities and DTOs add validated domain fields, and tenant configuration adds nullable-aware uniqueness.
Domain normalization and tenant resolution
src/.../TenantController.cs, src/.../TenantManagementController.cs, src/.../TenantProvider.cs
Domains are normalized and checked for duplicates; anonymous requests resolve custom domains before tenant-name subdomains.
Tenant domain UI and localization
src/.../Tenants/*.razor, src/.../Resources/AppStrings*.resx
Tenant forms, lists, cards, and localized resources support domain entry, display, and validation.

Nullable uniqueness indexes

Layer / File(s) Summary
Nullable index abstraction
src/.../EntityTypeBuilderExtensions.cs
Adds HasUniqueIndexOnNullable with provider-specific filtered-index generation and expression parsing.
Identity and notification index migrations
src/.../Identity/Configurations/*.cs, src/.../PushNotificationSubscriptionConfiguration.cs
Identity and push-notification indexes use the nullable-aware helper while retaining global and template-specific uniqueness paths.

Runtime configuration updates

Layer / File(s) Summary
Dynamic configuration binding foundation
src/.../IConfigurationExtensions.cs, src/Directory.Build.props, src/.../Program*.cs
Adds DynamicBind, enables configuration binding generation, and updates Sentry and memory-cache binding calls.
Forwarded-header configuration separation
src/.../WebApplicationExtensions.cs, src/.../ServerSharedSettings.cs, src/.../ServerWebSettings.cs, src/.../Program.Services.cs
Forwarded-header options are dynamically read from configuration sections instead of settings properties.
Configuration surface cleanup
src/.../SharedSettings.cs
Removes the MemoryCache property from shared settings.

Playwright template tooling

Layer / File(s) Summary
Playwright MCP setup
.mcp.json, .vscode/mcp.json, AGENTS.md
Registers the Playwright MCP server and updates project-running and UI-validation instructions.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Client
  participant TenantController
  participant TenantStore
  participant TenantProvider
  Client->>TenantController: submit tenant domain
  TenantController->>TenantStore: validate normalized domain uniqueness
  TenantStore-->>TenantController: validation result
  Client->>TenantProvider: request with host
  TenantProvider->>TenantStore: read active tenant lookup
  TenantStore-->>TenantProvider: domain and name mappings
  TenantProvider-->>Client: resolved tenant context
Loading

Poem

A rabbit hops through domains bright,
With lowercase paths set just right.
MCP tools whisk browsers near,
Dynamic settings bind and steer.
Nullable indexes guard the gate—
Tenants now know which host to await.

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Out of Scope Changes check ⚠️ Warning The PR also adds unrelated tenant-domain, forwarded-header, index, MCP, AGENTS, and Sentry changes beyond configuration binding. Split the unrelated changes into separate PRs and keep this one focused on configuration binding generator adoption.
Docstring Coverage ⚠️ Warning Docstring coverage is 13.04% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title is concise and matches the main change: updating Boilerplate's configuration binding to use the source generator.
Linked Issues check ✅ Passed The PR updates Boilerplate's config binding setup by enabling the binding generator and replacing Bind calls with DynamicBind wrappers.
✨ 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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 4

🧹 Nitpick comments (1)
src/Templates/Boilerplate/Bit.Boilerplate/src/Shared/Infrastructure/Extensions/IConfigurationExtensions.cs (1)

15-18: 🚀 Performance & Scalability | 🔵 Trivial | 💤 Low value

Cache the MethodInfo to avoid repeated reflection overhead.

Since DynamicBind will be executed during application startup and potentially upon every runtime configuration reload via IOptionsMonitor, consider caching the MethodInfo in a static readonly field. This avoids the overhead of discovering the method via reflection on each invocation.

♻️ Proposed refactor
+       private static readonly System.Reflection.MethodInfo? BindMethod = typeof(ConfigurationBinder).GetMethod(nameof(ConfigurationBinder.Bind), [typeof(IConfiguration), typeof(object)]);
+
        public IConfiguration DynamicBind<T>(T options)
        {
-           typeof(ConfigurationBinder).GetMethod(nameof(ConfigurationBinder.Bind), [typeof(IConfiguration), typeof(object)])!
-                   .Invoke(null, [configuration, options]);
+           BindMethod!.Invoke(null, [configuration, options]);
🤖 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/Templates/Boilerplate/Bit.Boilerplate/src/Shared/Infrastructure/Extensions/IConfigurationExtensions.cs`
around lines 15 - 18, Cache the reflected ConfigurationBinder.Bind MethodInfo in
a static readonly field on the containing extension class, initialized once with
the existing signature lookup. Update DynamicBind<T> to invoke that cached field
instead of calling GetMethod on every execution, preserving the current
configuration and options arguments.
🤖 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/Templates/Boilerplate/Bit.Boilerplate/.mcp.json`:
- Around line 15-18: Replace the mutable `@playwright/mcp`@latest reference with
one identical exact published version in both
src/Templates/Boilerplate/Bit.Boilerplate/.mcp.json (lines 15-18) and
src/Templates/Boilerplate/Bit.Boilerplate/.vscode/mcp.json (lines 15-18),
preserving the existing Playwright stdio configuration.

In
`@src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Features/Identity/Services/AppJwtSecureDataFormat.cs`:
- Around line 34-35: Update Unprotect to clone the baseline validationParameters
on each validation, then apply the current Identity.Audience and Identity.Issuer
from appSettingsMonitor.CurrentValue before calling
JwtSecurityTokenHandler.ValidateToken. Preserve the existing baseline parameters
and use the per-call clone so runtime configuration changes are honored.

In
`@src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Features/Identity/Services/TenantProvider.cs`:
- Around line 79-95: Update GetTenantsLookup when constructing IdsByName and
IdsByDomain to lowercase each tenant Name and Domain key before inserting them
into the dictionaries, while retaining StringComparer.OrdinalIgnoreCase and the
existing filtering behavior for empty domains.

In
`@src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Features/Tenants/TenantConfiguration.cs`:
- Around line 34-39: Update the PostgreSQL index filter in the Tenant entity
configuration to use double-quoted identifier syntax for the Domain column
instead of single quotes, ensuring the generated column name is matched when
naming conventions apply. Keep the unique index configuration unchanged.

---

Nitpick comments:
In
`@src/Templates/Boilerplate/Bit.Boilerplate/src/Shared/Infrastructure/Extensions/IConfigurationExtensions.cs`:
- Around line 15-18: Cache the reflected ConfigurationBinder.Bind MethodInfo in
a static readonly field on the containing extension class, initialized once with
the existing signature lookup. Update DynamicBind<T> to invoke that cached field
instead of calling GetMethod on every execution, preserving the current
configuration and options arguments.
🪄 Autofix (Beta)

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

Run ID: e2ef1815-6177-4900-95b2-873115fb9f57

📥 Commits

Reviewing files that changed from the base of the PR and between d9e9842 and 7226ff1.

📒 Files selected for processing (40)
  • src/Templates/Boilerplate/Bit.Boilerplate/.mcp.json
  • src/Templates/Boilerplate/Bit.Boilerplate/.vscode/mcp.json
  • src/Templates/Boilerplate/Bit.Boilerplate/AGENTS.md
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/Pages/Tenants/AddOrEditTenantModal.razor
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/Pages/Tenants/ManageAllTenantsPage.razor
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/Pages/Tenants/ManageMyTenantsPage.razor
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/MauiProgram.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/Program.Services.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Windows/Program.Services.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Directory.Build.props
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Features/Identity/Services/AppJwtSecureDataFormat.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Features/Identity/Services/TenantProvider.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Features/Tenants/Tenant.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Features/Tenants/TenantConfiguration.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Features/Tenants/TenantController.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Features/Tenants/TenantManagementController.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Infrastructure/RequestPipeline/ForceUpdateMiddleware.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Program.Services.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Program.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Shared/Infrastructure/Extensions/WebApplicationBuilderExtensions.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Shared/Infrastructure/Extensions/WebApplicationExtensions.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Shared/Infrastructure/Services/AppResponseCachePolicy.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Shared/ServerSharedSettings.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Web/Program.Services.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Web/Program.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Web/ServerWebSettings.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Shared/Features/Tenants/Dtos/TenantDto.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Shared/Infrastructure/Extensions/IConfigurationExtensions.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Shared/Infrastructure/Extensions/ISharedServiceCollectionExtensions.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Shared/Resources/AppStrings.ar.resx
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Shared/Resources/AppStrings.de.resx
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Shared/Resources/AppStrings.es.resx
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Shared/Resources/AppStrings.fa.resx
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Shared/Resources/AppStrings.fr.resx
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Shared/Resources/AppStrings.hi.resx
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Shared/Resources/AppStrings.nl.resx
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Shared/Resources/AppStrings.resx
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Shared/Resources/AppStrings.sv.resx
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Shared/Resources/AppStrings.zh.resx
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Shared/SharedSettings.cs
💤 Files with no reviewable changes (3)
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Shared/ServerSharedSettings.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Web/ServerWebSettings.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Shared/SharedSettings.cs

Comment thread src/Templates/Boilerplate/Bit.Boilerplate/.mcp.json
@yasmoradi
yasmoradi force-pushed the 12679 branch 2 times, most recently from 6333e77 to b89fa52 Compare July 17, 2026 21:27
@yasmoradi yasmoradi changed the title bit Boilerplate supports runtime configuration change without restart (#12679) use source generator to bind configuration in bit Boilerplate (#12679) Jul 17, 2026
@yasmoradi yasmoradi changed the title use source generator to bind configuration in bit Boilerplate (#12679) Use source generator to bind configuration in bit Boilerplate (#12679) Jul 17, 2026
@yasmoradi

Copy link
Copy Markdown
Member Author

@coderabbitai full review

@coderabbitai

coderabbitai Bot commented Jul 17, 2026

Copy link
Copy Markdown
✅ Action performed

Full review finished.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (1)
src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Features/Identity/Configurations/RoleConfiguration.cs (1)

31-37: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Consolidate provider-specific IS NULL filters.

The PR successfully abstracted the provider-specific syntax for IS NOT NULL filters into HasUniqueIndexOnNullable, but identical preprocessor blocks for IS NULL filters were left scattered across entity configurations. Consider adding a complementary HasUniqueIndexWhereNull extension method to DRY up these remaining configurations.

  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Features/Identity/Configurations/RoleConfiguration.cs#L31-L37: Replace this conditional filter block with a call to the proposed HasUniqueIndexWhereNull helper.
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Features/Identity/Configurations/UserClaimConfiguration.cs#L16-L22: Replace this conditional filter block with a call to the proposed HasUniqueIndexWhereNull helper.
🤖 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/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Features/Identity/Configurations/RoleConfiguration.cs`
around lines 31 - 37, Introduce the complementary HasUniqueIndexWhereNull
extension alongside HasUniqueIndexOnNullable, handling provider-specific IS NULL
syntax internally. In RoleConfiguration.cs lines 31-37 and
UserClaimConfiguration.cs lines 16-22, replace each conditional HasFilter block
with the new helper while preserving the existing unique index on the nullable
TenantId column.
🤖 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/Templates/Boilerplate/Bit.Boilerplate/src/Shared/Infrastructure/Extensions/IConfigurationExtensions.cs`:
- Around line 10-12: The bind delegate in IConfigurationExtensions must not use
reflection, since this prevents configuration binding from being visible to AOT
and trimming. Replace the reflected ConfigurationBinder.Bind call with
source-generated binding, and address any third-party obsolete-property warnings
through targeted project warning suppression or explicit property binding.
Ensure SentryOptions, MemoryCacheOptions, and ForwardedHeadersOptions continue
binding correctly across all affected projects.

---

Nitpick comments:
In
`@src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Features/Identity/Configurations/RoleConfiguration.cs`:
- Around line 31-37: Introduce the complementary HasUniqueIndexWhereNull
extension alongside HasUniqueIndexOnNullable, handling provider-specific IS NULL
syntax internally. In RoleConfiguration.cs lines 31-37 and
UserClaimConfiguration.cs lines 16-22, replace each conditional HasFilter block
with the new helper while preserving the existing unique index on the nullable
TenantId column.
🪄 Autofix (Beta)

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

Run ID: 49661f72-ec63-4eaf-a0ec-44b38141574d

📥 Commits

Reviewing files that changed from the base of the PR and between 633bf5c and 5788cd2.

📒 Files selected for processing (40)
  • src/Templates/Boilerplate/Bit.Boilerplate/.mcp.json
  • src/Templates/Boilerplate/Bit.Boilerplate/.vscode/mcp.json
  • src/Templates/Boilerplate/Bit.Boilerplate/AGENTS.md
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/Pages/Tenants/AddOrEditTenantModal.razor
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/Pages/Tenants/ManageAllTenantsPage.razor
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Core/Components/Pages/Tenants/ManageMyTenantsPage.razor
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Maui/MauiProgram.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Web/Program.Services.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Client/Boilerplate.Client.Windows/Program.Services.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Directory.Build.props
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Features/Identity/Configurations/RoleConfiguration.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Features/Identity/Configurations/UserClaimConfiguration.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Features/Identity/Configurations/UserConfiguration.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Features/Identity/Services/TenantProvider.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Features/PushNotification/PushNotificationSubscriptionConfiguration.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Features/Tenants/Tenant.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Features/Tenants/TenantConfiguration.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Features/Tenants/TenantController.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Features/Tenants/TenantManagementController.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Infrastructure/Extensions/EntityTypeBuilderExtensions.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Api/Program.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Shared/Infrastructure/Extensions/WebApplicationExtensions.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Shared/ServerSharedSettings.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Web/Program.Services.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Web/Program.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Web/ServerWebSettings.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Shared/Features/Tenants/Dtos/TenantDto.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Shared/Infrastructure/Extensions/IConfigurationExtensions.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Shared/Infrastructure/Extensions/ISharedServiceCollectionExtensions.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Shared/Resources/AppStrings.ar.resx
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Shared/Resources/AppStrings.de.resx
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Shared/Resources/AppStrings.es.resx
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Shared/Resources/AppStrings.fa.resx
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Shared/Resources/AppStrings.fr.resx
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Shared/Resources/AppStrings.hi.resx
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Shared/Resources/AppStrings.nl.resx
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Shared/Resources/AppStrings.resx
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Shared/Resources/AppStrings.sv.resx
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Shared/Resources/AppStrings.zh.resx
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Shared/SharedSettings.cs
💤 Files with no reviewable changes (3)
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Shared/SharedSettings.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Shared/ServerSharedSettings.cs
  • src/Templates/Boilerplate/Bit.Boilerplate/src/Server/Boilerplate.Server.Web/ServerWebSettings.cs

@yasmoradi
yasmoradi merged commit af3edbf into bitfoundation:develop Jul 17, 2026
3 checks passed
@yasmoradi
yasmoradi deleted the 12679 branch July 17, 2026 22:41
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 is not using source generator for configuration binding

1 participant