Core.Maui 0.3.79

Core.Maui

Product-neutral MAUI library for native application hosts. It includes the MAUI projection of the workspace spatial/density system, the shared operator/field sign-in presentation surface, API-key client support, secure-storage helpers, shell adapters, device services, and other reusable platform mechanics.

Spatial and density kit

Core.Presentation.Spatial owns the framework-neutral 2/4/6-unit rhythm, complete primitive ladder, Compact / Standard / Comfortable recipes, accessible interaction-target arithmetic, and persisted-preference migration helpers. Core.Maui.Spatial maps the current MAUI device idiom and platform to that neutral contract and updates the shared resource aliases.

Merge Resources/Styles/SpatialRhythm.xaml into the product application resources, then apply the stored preference after startup and whenever it changes:

var metrics = MauiSpatialResources.ApplyForPreference(
    Application.Current!.Resources,
    storedDensityPreference);

The XAML dictionary ships at contentFiles/any/any/Resources/Styles/SpatialRhythm.xaml in the Core.Maui package. Product apps may add named component geometry, insets, and responsive breakpoints; they must not redefine the primitive ladder, density vocabulary, recipes, or target-floor arithmetic. The existing generated spacing.kendo.* dictionary remains a theme projection and is not the spatial system.

Authentication parity posture

The existing API-key client, bearer-token storage, provider interfaces, and biometric helper are foundations—not parity with the canonical broker contract. Durable rotating sessions, broker password challenges, TOTP/recovery, passkey/platform-credential integration, current authorization context, broker-aware logout, and account/session management remain planned neutral adapters.

Products must not interpret local biometric unlock as broker MFA or copy portal-cookie behavior into native code. Native clients use OS-protected credential storage and native browser/callback flows over the same broker semantics. See the canonical authentication and authorization capability and cross-surface parity plan.

Neutral shell adapter

Core.Maui.ShellAdapters.MauiShellCatalogAdapter maps Core.Shell destinations to product-resolved native routes and deep links and derives stable automation IDs. Products own catalogs, route maps, back behavior, visibility policy, workflows, and authorization. The adapter does not copy portal CSS or make customer, field, and operator apps visually identical.

Operator/field sign-in surface

Core.Maui.SignIn.OperatorSignInPage owns the responsive sign-in layout, accessible interaction targets, spatial-density application, identifier/password/one-time-code steps, recovery link, display preferences, legal/version footer, local-proof affordance, and a product-specific step slot.

Products implement IOperatorSignInViewModel over their own authentication broker and session services, and provide IOperatorSignInDisplayPreferences plus OperatorSignInSurfaceOptions. Products continue to own all copy and localization, branding, broker binding, proof configuration, navigation after success, and any product-specific or identity-assurance step. Core does not make authentication decisions or persist product preferences.

The old Core.Maui.Pages.LoginPage and ForgotPasswordPage and their view models were removed when this surface shipped; they were unused API-key-era examples, not the canonical broker contract.

Using in a MAUI app

  1. Add a reference to Core.Maui.
  2. Implement IOperatorSignInViewModel and IOperatorSignInDisplayPreferences in the product.
  3. Derive a thin product page from OperatorSignInPage, pass product-owned options, and retain the product's success-routing/startup-gate behavior there.
  4. Register the product view model, preference service, and composed page in MauiProgram.

Other Core.Maui features

  • Biometric authentication, Apple/Google sign-in, push notifications, and related interfaces (see project files).
  • Device permission safety via IDevicePermissionService, IDevicePermissionPlatform, and MauiDevicePermissionPlatform.
  • Deferred notification prompt sequencing via INotificationPromptCoordinator and MauiDeferredUiActionDispatcher.

Biometric provider boundary

Apps consume IBiometricAuthenticationService; the third-party provider is an implementation detail. Core.Maui uses the stable .NET 10 Plugin.Maui.Biometric package and must not expose its request, response, or status types in Core's public API. Product apps own the platform permission descriptions required by their Android manifest and Apple Info.plist.

Device permission safety

Register the shared permission services in each MAUI app:

builder.Services.AddSingleton<IDevicePermissionPlatform, MauiDevicePermissionPlatform>();
builder.Services.AddSingleton<IDevicePermissionService, DevicePermissionService>();

Use IDevicePermissionService for optional device capabilities such as location, notifications, camera, photos, media, microphone, and contacts. Optional capabilities should quietly fall back when permission is denied, restricted, unavailable, disabled, or throws a platform permission exception. Do not show a blocking modal for optional context like distance sorting.

var location = await devicePermissionService.RunIfGrantedAsync<Location>(
    DevicePermissionKind.LocationWhenInUse,
    _ => Geolocation.GetLastKnownLocationAsync());

Notification prompt sequencing

Register the shared notification prompt coordinator in each MAUI app that may request push notification permission after sign-in:

builder.Services.AddSingleton<IDeferredUiActionDispatcher, MauiDeferredUiActionDispatcher>();
builder.Services.AddSingleton<INotificationPromptCoordinator, NotificationPromptCoordinator>();

Use it from the logged-in home or equivalent stable surface. The app owns the actual push registration behavior; Core.Maui owns the delay, once-per-session guard, and exception callback shape.

notificationPromptCoordinator.QueueAfterStableSurface(
    () => pushNotificationsRegistrationService.EnsurePushSetupAfterLoginAsync(),
    shouldQueue: () => currentUser != null,
    options: new NotificationPromptCoordinatorOptions(
        TimeSpan.FromSeconds(1),
        exception => logger.LogError(exception, "Notification prompt failed.")));

No packages depend on Core.Maui.

Version Downloads Last updated
0.3.82 2 08/13/2026
0.3.81 4 08/13/2026
0.3.80 3 08/12/2026
0.3.79 4 08/12/2026
0.3.78 3 08/12/2026
0.3.77 39 07/20/2026
0.3.76 4 07/19/2026
0.3.60 3 07/14/2026
0.3.59 3 07/14/2026
0.3.58 3 07/14/2026
0.3.57 3 07/14/2026
0.3.56 3 07/14/2026
0.3.27 4 07/05/2026
0.3.26 6 07/05/2026
0.3.24 5 07/03/2026
0.3.11 12 06/19/2026
0.3.10 4 06/19/2026
0.3.9 4 06/19/2026
0.3.8 4 06/19/2026
0.3.7 4 06/19/2026
0.3.6 4 06/18/2026
0.3.5 4 06/18/2026
0.3.4 7 06/10/2026
0.3.0 6 06/02/2026
0.2.0 5 06/02/2026
0.1.3-local.1 6 06/10/2026
0.1.2 6 05/31/2026
0.1.2-local.1 4 06/10/2026
0.1.1 6 05/28/2026
0.1.0 9 05/23/2026
0.1.0-alpha.7 5 05/21/2026
0.1.0-alpha.6 5 05/21/2026
0.1.0-alpha.5 5 05/21/2026
0.1.0-alpha.4 6 05/21/2026
0.1.0-alpha.3 5 05/21/2026
0.1.0-alpha.2 6 05/20/2026