Core.Maui 0.3.82

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 geometry for product-owned components; they must not redefine the primitive ladder, density vocabulary, recipes, target-floor arithmetic, or promoted adaptive-shell geometry. 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.

AdaptiveShellPage is the native chrome host over that semantic boundary. It owns the application header, safe-area consumption, workspace rail, contextual navigation sidebar, phone drawer, bottom dock, overflow sheet, account menu, breakpoint transitions, density application, active selection, and automation-ID compatibility seam. AdaptiveShellGeometry preserves the reviewed 54-unit rail / 44-unit interaction-target relationship and selects a neutral sidebar width by shell profile.

Products supply AdaptiveShellComposition: branding and palette, projected workspaces and destinations, header commands, account actions, navigation groups, established automation IDs, and the field/operator profile. Product code handles the emitted destination/command/account events and sets the content view. Core never creates a product page, resolves product authorization, interprets a route, or chooses product copy.

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.

Startup connection capability

Core.Maui.StartupConnection owns a bounded HTTP probe, the reachable / no-network / unreachable / service-problem taxonomy, an injectable device-network seam, a default response classifier, and an optional full-page retry surface. The probe checks the configured product endpoint first and uses the device network hint only after transport failure.

Products select the client/base address, probe path, timeout, response classifier, copy, localization, branding, safe diagnostic identity, and routing policy. A product may observe a failure without blocking, block only sign-in, or apply another workflow rule; Core does not route. The default treats responses below 500—including 404—as reachable and 5xx as a service problem. That mapping is replaceable because health degradation and authentication availability are not universally the same condition.

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