Repository navigation
NGB Platform 3.0.0
NGB Platform 3.0.0 is a major release with breaking architecture and public-contract changes, backend and frontend bug fixes, improved data-access and reporting performance, and expanded automated testing. Property Management, Trade, Agency Billing, and CRM move together to 3.0.0.
Important
This is a breaking release. Platform NuGet packages, @ngbplatform/ui, APIs, background hosts, migrators, and web applications must be upgraded together. Mixed 2.0.x and 3.0.x deployments are not supported. Publish NuGet and npm packages before building the registry-consuming CRM release images.
Architecture and compatibility
Hosting and provider responsibilities now have explicit package boundaries:
NGB.Platform.Hosting.AspNetCoreowns shared authentication, branding, health responses,
CORS, and HTTP error handling.NGB.Platform.Runtime.Hostingprovides explicit runtime startup validation.NGB.Platform.PostgreSql.AspNetCoreowns PostgreSQL HTTP error mapping and health checks.NGB.Platform.BackgroundJobs.PostgreSqlowns PostgreSQL-backed Hangfire storage and inspection.
Architecture tests enforce dependency direction. Custom hosts must update package references, namespaces, and composition roots. Public service/repository interfaces gain batch and paging operations; positional DTOs and reporting contracts also change. Recompile consumers and deploy all platform packages and web applications together. Mixed 2.x/3.x deployments are unsupported.
Follow Migrating from 2.0.0 to 3.0.0 for the complete upgrade sequence, required registrations, contract changes, request limits, database migrations, and rollback notes.
Reliability and performance
- Batched catalog, document, register, reporting, and vertical operations reduce N+1 database reads and allocations.
- Reports support cursor paging, inline group expansion, streaming XLSX downloads, and per-instance admission limits. Clients must handle continuation cursors, nullable totals, and HTTP 429.
- Backend and frontend fixes cover document lifecycle operations, reports, authentication, Work Center, and vertical workflows.
- Integration tests use isolated database collections, controlled fixture startup, and regression checks for deterministic paging, migration concurrency, query counts, and full report exports.
Performance results depend on the workload, dataset, hardware, and configuration. Compare runs using the performance operations guide; this release does not claim a universal percentage speedup.
Test coverage
The release quality gates require 100% backend line, branch, and method coverage, and 100% frontend line, branch, function, and statement coverage for eligible production source. They also check file completeness and coverage per file, so an aggregate percentage cannot hide a missing source file. Declaration-only and generated files are handled by the committed coverage validators and run settings.
Run the gates from the repository root:
./run-backend-full-coverage.sh
./run-frontend-full-coverage.shThe backend runner includes volume tests and requires Docker for isolated integration fixtures.
The frontend runner includes type checking, public-export validation, unit/browser tests, and Playwright E2E tests; install the Playwright browsers before running it. A release requires both runners to exit successfully. Preserve their reports and logs with the tested commit; a coverage summary alone does not establish that all tests passed.
Performance test framework
The private performance-tests workspace, ngb-performance-tests-framework, and the Property Management, Trade, and Agency Billing scenario packages are versioned 3.0.0 and target NGB 3.0.x.
- The shared framework, vertical scenarios, runners, diagnostics, analysis tools, and runbooks have been reorganized into explicit areas.
- Property Management has expanded read, reporting, lifecycle, posting, capacity, breakpoint, contention, and write-heavy scenarios, plus focused diagnostic probes.
- Run manifests capture workload settings and revision identity; offline tooling supports resource analysis and controlled before/after comparisons.
- Fresh posting measures newly created documents. Replaying an already-posted fixture is a separate workload. HTTP failures, dropped iterations, and write-branch execution have stricter gates.
- Stable operation names bound HTTP metric cardinality; breakpoint runs preallocate their VU pool and allow in-flight work to finish without relaxing the dropped-iteration gate.
Trade and Agency Billing still provide smoke scaffolds; CRM has no dedicated k6 suite in this release. A shared version does not imply equivalent performance-test coverage across verticals.
See the performance changelog
and performance testing documentation.
Release artifacts
| Component | Version / delivery |
|---|---|
20 NGB.Platform.* NuGet packages and symbol packages |
3.0.0 |
| .NET assembly identity | 3.0.0.0 |
@ngbplatform/ui |
3.0.0 |
| Four verticals: APIs, migrators, background jobs, watchdogs, and web apps | 3.0.0 |
| Private UI, documentation, and performance workspaces | 3.0.0 |
| Release source and container tag | v3.0.0 |
Backend builds target .NET 10. CRM release builds consume registry packages, so publish the complete NuGet and npm package sets before building its release images. Preserve the exact CRM consumer lockfile integrity for the published UI tarball.
Maintainers should follow the publishing guide.
Full Changelog: v3.0.0...v3.0.0