Strengthen TypeScript model typings across several ABP proxy models: make many previously-optional fields required, replace nullable union types with stricter types (remove | null in many places), convert nullable arrays/objects to concrete arrays/records, and normalize a few property types (e.g. LocalizableString.resource). Updated files: application-configurations/object-extending/models.ts, asp-net-core/mvc/multi-tenancy/models.ts, http/modeling/models.ts. Also added an export for './lib/proxy/volo/abp/multi-tenancy' to public-api.ts so the multi-tenancy proxies are publicly available.
Update generated proxy metadata and related ABP exports. The generate-proxy.json was extended with many Account endpoints (email/phone confirmation, two-factor, profile picture upload/download, security logs, confirmation checks, etc.), added authorizeDatas fields, and switched Account contract type references to the Pro.Public.Application.Contracts package while changing the account remoteServiceName to AbpAccountPublic. Also add multi-tenancy index and tenant-user-sharing-strategy enum exports and update several Volo.Abp model/index files to reflect these API and model changes to support ABP Pro public account and multi-tenancy features.
Update generated proxy metadata to include new Account APIs and metadata fixes. Changes set remoteServiceName for account to "AbpAccountPublic", switch many Account types to Pro.Public.Application.Contracts, add numerous account endpoints (confirmation, phone/email tokens, profile picture upload/download, two-factor, security logs, email confirmation codes, authenticator flows, change-email, etc.), add authorizeDatas arrays where applicable, and adjust parameter/binding metadata (including form/file bindings for profile picture). Also add volo/abp/multi-tenancy index and tenant-user-sharing-strategy enum files and update related generated service files to reflect the new definitions.
Bump Angular-related dependencies and devDependencies from ~21.0.0/~21.1.0 to ~21.2.0 across ng-packs, schematics and template package.json files. Also update TypeScript to ~5.9.0 in schematics and latest-versions, bump ng-packagr to ~21.2.0 and ng-zorro-antd to ~21.1.0, and adjust related @schematics/@angular-devkit packages for compatibility.
Add the 'pb-0' class to the modal header div in modal.component.html to remove the default bottom padding when abpHeader() is present. This fixes layout/spacing in the theme-shared modal header.
Update MultiTenancyInfoDto so userSharingStrategy is optional. This allows responses that omit the userSharingStrategy field (improving compatibility with servers that don't return it).
Introduce TenantUserSharingStrategy enum (Isolated, Shared) and add a userSharingStrategy property to MultiTenancyInfoDto so consumers can detect tenant user-sharing mode. Also include a minor newline fix in theme-shared tokens index.
Remove a duplicated 'Permissions' <h4> localization header from the resource-permission-form template. This eliminates a redundant heading above the permission checkbox list in the edit branch to improve the form layout.
Replace the previous ngTabs/ngTab implementation in users.component.html with ng-bootstrap's ngbNav/ngbNavItem/ngbNavContent and an ngbNavOutlet for rendering tab content. Update users.component.ts to import and declare NgbNavModule and remove the removed @angular/aria tab imports. Also remove the @angular/aria peerDependency from the package.json for the identity package. These changes migrate the users UI to use ngbNav for tabbing and keep existing form/roles markup and localization intact.
Change inputId from input.required<string>() to input<string>() so the id is no longer mandatory. This relaxes the API to allow FormInputComponent instances without an explicit id and avoids forcing callers to provide one.
Switch DisabledDirective from the OnChanges lifecycle to Angular signal-based reactivity: remove OnChanges/SimpleChanges usage and import effect/input instead. Create an effect that reads the abpDisabled input signal and enables/disables the injected NgControl accordingly, preserving previous behavior while using reactive signals (addresses timing/changes handling referenced in Angular issue).
Import Angular's effect and add a reactive effect that reads this.data() and, if data.inputs and defaultComponentRef are present, calls setDefaultComponentInputs(). Ensures default component inputs are reapplied when the directive's input data changes.
Replace classic @Input properties with Angular signal-based inputs (input()) for providerName, providerKey, hideBadges, entityDisplayName and visible; add corresponding output signal for visibleChange. Provide getter/setter overrides to preserve runtime assignment compatibility. Update template to call entityDisplayName() as a signal. Add a constructor effect that reacts to visibleInput changes to open/init or close the modal and keep internal _visible state in sync. Also adjust imports to include effect, input, output and untracked.
Replace PropData with ReadonlyPropData for the component input and update all usages to treat this.data() as the prop data (remove prior .data dereferences). Remove the unused PropData import, route the options() call and disabled checks to use the new shape, and add cdRef.markForCheck() in the reactive effect to ensure change detection after updates.
Return early in ExtensibleFormPropComponent effect when this.data()?.data is falsy. Previously the effect only checked currentProp and could attempt to access properties on undefined data, causing runtime errors; this adds a defensive check to avoid that.
Multiple fixes and refactors across components and directives:
- chart.component.ts: Make initChart accept data and options, pass them when initializing/reinitializing, and avoid unnecessary early returns in effects.
- extensible-form-prop.component.ts: Guard against missing data, reuse a local data variable, pass record to injector providers, and tighten autofocus condition checks.
- extensible-table.component.ts: Extract record preparation into prepareRecord to simplify data mapping logic.
- tree.component.ts: Cache checked keys once when toggling node selection to avoid repeated calls.
- autofocus.directive.ts: Remove deprecated numberAttribute and use a transform that safely converts input to Number.
- permission-management.component.ts: Cache providerName/providerKey, validate them before fetching, and use cached values in filters and checks.
- visible.directive.ts: Avoid redundant condition updates by tracking the last input value.
These changes improve safety (null checks), readability (helper extraction), and performance (reduced repeated computations).