From aa8fd2df812b81fffc44586573c9ce440a7ee3a0 Mon Sep 17 00:00:00 2001 From: Martijn Laarman Date: Wed, 2 Sep 2026 18:01:10 +0200 Subject: [PATCH] Port from F#/Argu to C#/Nullean.Argh, add native-AOT tool packaging Argu's argument parsing leans on reflection over F# union case metadata, which NativeAOT trims away, so a published AOT build of the old F# tool silently failed to recognize any of its own arguments. Porting to C# and Nullean.Argh (a source generator, so no reflection at parse time) unblocks AOT packaging the same way curb and assembly-differ already ship it: one native-AOT package per RID plus a framework-dependent 'any' fallback, selected transparently by the root package's DotnetToolSettings.xml. SemVer parsing/comparison moves from Fake.Core.SemVer to NuGet.Versioning, and Octokit is bumped from 0.43.0 to 14.0.0, both reflection-free and AOT-friendly. Breaking change: Argh's dispatch model requires an explicit command name for every invocation (generate/apply-labels/find-previous/current-version/ create-release) - there is no bare `release-notes ` shorthand for `generate` anymore. --label also moves from two tokens to one combined `