Owlery.Maui.Scheduler 0.1.33

dotnet add package Owlery.Maui.Scheduler --version 0.1.33
                    
NuGet\Install-Package Owlery.Maui.Scheduler -Version 0.1.33
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Owlery.Maui.Scheduler" Version="0.1.33" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Owlery.Maui.Scheduler" Version="0.1.33" />
                    
Directory.Packages.props
<PackageReference Include="Owlery.Maui.Scheduler" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Owlery.Maui.Scheduler --version 0.1.33
                    
#r "nuget: Owlery.Maui.Scheduler, 0.1.33"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Owlery.Maui.Scheduler@0.1.33
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Owlery.Maui.Scheduler&version=0.1.33
                    
Install as a Cake Addin
#tool nuget:?package=Owlery.Maui.Scheduler&version=0.1.33
                    
Install as a Cake Tool

Owlery.Maui.Scheduler

A .NET MAUI week-view scheduler control, built from plain MAUI primitives — no XAML, no Blazor, and exactly one package reference of its own.

NuGet

  • Infinite horizontal paging through weeks, three days, or a single day, and a month surface.
  • Drag-and-drop rescheduling, including across weeks by holding at the edge.
  • A drawn grid — hour lines, configurable sub-hour marks, non-working days and hours, today.
  • Semantic colours as ordinary bindable properties, so a MAUI Style or AppThemeBinding is the theme.
  • Appointment views are pooled and rebound, never rebuilt.

Getting started

dotnet add package Owlery.Maui.Scheduler

The control needs one line from the host, because MAUI gives a library no way to register a handler for itself:

builder.UseOwleryScheduler();

Then supply appointments and respond to what the user did:

new SchedulerView
{
    ItemsSource = appointments,          // IEnumerable<ISchedulerAppointment>
    AppointmentTemplate = template,
    SlotMinutes = 60,                    // a tap selects a whole hour
    DragSnapMinutes = 15,                // a drag lands on the quarter
}

VisibleDatesChanged is the data-loading hook: it reports the range on screen plus a prefetch window, including on first layout.

Documentation

Document Answers
docs/API.md The public surface — properties, events, contracts, defaults
docs/design/ Why it is built this way — decisions, alternatives rejected, costs
docs/requirements/ What it does, as behaviour
AGENTS.md How to work on it

Repository layout

Project
Owlery.Maui.Scheduler The control. Targets net10.0, net10.0-android, net10.0-ios.
Owlery.Maui.Scheduler.Sample A bare MAUI playground with a drawer of knobs bound to the public properties.
Owlery.Maui.Scheduler.Tests Headless NUnit tests on net10.0 — no simulator, no device.
dotnet test Owlery.Maui.Scheduler.Tests/Owlery.Maui.Scheduler.Tests.csproj
dotnet build Owlery.Maui.Scheduler.Sample/Owlery.Maui.Scheduler.Sample.csproj -f net10.0-ios -t:Run

Releasing

Versions come from Nerdbank.GitVersioning (version.json), so a release on tag v0.1.4 publishes 0.1.4.

Run the Create release tag workflow against a branch or commit. It tags that commit with the version NBGV computes for it and pushes the tag — you never type a version number, so the tag and the package cannot disagree.

Then create a GitHub release on that tag by hand — the GitHub UI, or gh release create <tag> --generate-notes --verify-tag. Publishing that release runs .github/workflows/publish-nuget.yml, which builds every target framework, runs the tests, and pushes the package and symbols to nuget.org.

Creating the release by hand is deliberate. A release created with the built-in GITHUB_TOKEN raises no event, so the publish workflow would never run, and a PAT would mean keeping a RELEASE_TAG_TOKEN secret. Using your own identity raises the event without either. Authentication to nuget.org is Trusted Publishing — the workflow proves its identity with a short-lived OIDC token, so there is no API key stored anywhere. That also means the policy on nuget.org names this workflow file: renaming or moving it breaks publishing until the policy is updated to match.

workflow_dispatch builds and packs without pushing, so the whole pipeline can be exercised before a real release.

License

MIT — see LICENSE.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-android36.0 is compatible.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-ios26.0 is compatible.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.33 39 9/27/2026
0.1.29 131 9/22/2026
0.1.26 87 9/21/2026
0.1.23 147 9/11/2026
0.1.20 121 9/9/2026
0.1.18 118 9/8/2026
0.1.15 110 9/8/2026
0.1.14 95 9/8/2026
0.1.11 110 9/2/2026
0.1.7 90 9/2/2026
0.1.3 99 8/31/2026