Visual Studio and WinUI tooling
- Visual Studio with .NET desktop development
- Windows application development workload
- .NET 10 SDK
- Git and GitHub access
Prima Facie Widget SDK
Start with the supported widget repository, define the package manifest, implement the SDK runtime contract, validate the experience in Heads Up, and submit the source for review.
Current compatibility
AnyCPU support is targeted for version 1.0.
01 / Prerequisites
The preview workflow deliberately controls the SDK, project configuration, and host environment so widget development remains aligned with Heads Up.
02 / Repository
The repository is the supported development boundary. It supplies the pinned SDK binary, documentation, reference widgets, and build configuration used during review and integration.
Widgets reference the SDK binary supplied by the repository. They do not reference Heads Up application, infrastructure, persistence, or Core assemblies.
The sample and first-party widgets demonstrate manifests, runtime behavior, commands, widget settings, private persistence, error handling, attention requests, responsive presentation, and deterministic resource cleanup.
Accepted packages are installed beneath
%LocalAppData%\PrimaFacie\HeadsUp\Widgets.
First-party and externally supplied widgets use
the same manifest, package, discovery, and
activation pipeline.
Clone instructions and the public repository URL will be added when the developer repository is ready for external contributions.
03 / Contract
The manifest is the authoritative package declaration. The SDK defines how the runtime widget collaborates with Heads Up. The host owns registration, instance state, dashboard composition, live workspace caching, refresh scheduling, and shutdown orchestration.
Heads Up owns
Your contribution owns
manifest.jsonDefines identity, description, author, version, capabilities, size, theme, logo, assembly, and runtime type.
IWidgetParticipates in initialization, refresh, and shutdown and responds to effective layout and viewport changes.
WidgetContextSupplies instance identity, widget and global settings, the private data directory, error reporting, attention services, theme, and layout.
WidgetViewportSupplies the effective layout, width, height, and Small, Compact, or Normal density available to the widget.
Host composition
From declaration to dashboard04 / Implementation
A widget should remain cohesive and independently understandable while participating consistently in the broader Heads Up environment.
Implement the widget as a focused WinUI control. Keep presentation responsive to the effective dimensions supplied by the host.
Use RelayCommand for synchronous work
and AsyncRelayCommand for asynchronous,
cancellation-aware operations.
Define widget settings and an optional settings experience. Global settings are supplied by Control Center for the widget to observe; the widget does not define them.
Heads Up supplies instance identity and a private data-directory boundary. The widget owns its data model, serialization, and recovery decisions.
Route operational failures through the SDK error boundary so the host can isolate the widget and preserve structured diagnostics.
Request user attention through the SDK attention service. Heads Up decides how the shell and taskbar express that request.
05 / Responsive behavior
Dashboard reflow can change a widget’s effective position and available dimensions. Presentation decisions must use the current viewport supplied by Heads Up.
06 / Validation
A successful project build is necessary, but it is not sufficient. The manifest and runtime widget must remain correct across initialization, refresh, dashboard switching, responsive reflow, persistence, shutdown, and host service boundaries.
Identity, author, version, runtime type, capabilities, size constraints, theme, and required assets are complete and valid.
Initialization, refresh, layout changes, viewport changes, cancellation, and shutdown behave predictably.
Independent widget instances do not accidentally share widget settings, private data, or mutable runtime state.
State survives restart, invalid state is handled deliberately, and recovery is safe.
Small, Compact, and Normal presentations remain usable after movement, resizing, and responsive dashboard reflow.
Meaningful runtime state survives dashboard switches, inactive presentation work is controlled, and returning to the dashboard restores the live experience.
Timers, subscriptions, sampling operations,
cancellation sources, and owned resources
are released through
ShutdownAsync.
Operational and shutdown failures are reported without destabilizing the dashboard or preventing the host from completing its work.
07 / Submission
Preview widgets enter Heads Up through the curated repository and pull-request process. Submission is the start of product integration review, not an independent distribution mechanism.
Include the widget project, WinUI surface, view model, models, widget settings experience, and required assets.
Supply stable identity, author, version, capabilities, sizing, theme, logo, assembly, and runtime type declarations.
Document the host scenarios exercised, known constraints, and responsive states reviewed.
Submit the contribution for architectural, product, reliability, accessibility, and integration review.