v10.4
It has been a while since we released a new version and we've been cooking a bit in the background, going from me being the sole maintainer and contributor to onboarding new people into this project and revitalising the Nuke or rather now the Fallout community with new life.
First of all, thanks to those who have decided to come forward and partake in keeping the vision of Nuke alive! And welcome to those who are brave enough to migrate their projects from Nuke to Fallout.
With this long awaited release, we're bringing you mostly stabilisation, long awaited PR merges and minor improvements, while we're preparing the architectural structure to move Fallout into a new future.
Please let us know if anything is missing, broken or not quite working as intended. The easiest way to do so is to create an issue here on Github.
What's Changed
✨ New Features
- Add project-scoped skill for restructuring PR commit history by @dennisdoomen in #416
- Adds a public Env property to GitHubActionsAttribute by @avidenic in #417
- Use different ansi escape code for yellow on gitlab by @ITaluone in #390
- Emit custom runs-on label arrays for self-hosted runners (#387) by @avidenic in #418
- Control the shell for run steps via DefaultShell by @avidenic in #430
- Allow arbitrary extra
with:inputs on the checkout step of [GitHubActions] by @avidenic in #431 - Allow UTF-8 console input by @ITaluone in #425
- Support for Windows not on the C drive by @ITaluone in #462
- Properly implement
FancyNamesfeature for solution generator by @ITaluone in #455 - Add ClickOnce settings definition for MSBuild by @ITaluone in #466
- Add .slnx support in GlobalTool's setup by @ITaluone in #461
- [GitHubActions] generator: typed
workflow_dispatchinputs (string, boolean, number, choice, environment) by @avidenic in #440 - Support git worktrees by @ITaluone in #465
- Emit build-graph.json for editor tooling by @ChrisonSimtian in #486
- Add a typed step-injection pipeline to the GitHub Actions generator by @avidenic in #475
- Add
XmlAddextension toXmlTasksby @ITaluone in #489 - Add missing ArtifactsPath property to
dotnet restoreby @IT-VBFK in #506 - Add tool definition for
cmakeby @IT-VBFK in #504 - Add SetBinaryLog support to DotNetPackSettings by @IT-VBFK in #502
- Add tool wrapper definition for
Strykerby @IT-VBFK in #503 - Improve fallout-migrate: NuGet-scoped version pin, TFM warning/bump, confirmation prompt, async pipeline by @dennisdoomen in #509
🐛 Bug Fixes
- Handle numeric fields in GitVersion 6.x JSON output (#218) by @dennisdoomen in #222
- Re-brand the mermaid execution plan (
--plan) by @ITaluone in #382 - Fix CS1734 warning in TransitionShimGenerator attribute XML doc by @SonnyRR in #415
- Fix errors/warnings for pre-existing code smells after reintroducing editorconfig et al by @ChrisonSimtian in #393
- Fix MSBuild tool resolve for VS2026 by @ITaluone in #420
- Handle missing changelog (sections) during pack by @dennisdoomen in #433
- Fix Pack when CHANGELOG.md is missing by @dennisdoomen in #437
- Relax DotNetTasks diagnostic ID log level patterns to reduce false negatives by @taiscrummaster in #467
- Treat lower case
npm warnalso as warning by @ITaluone in #463 - Fix bug, where a string stated as content is handled like a path by @ITaluone in #490
- Escape single quotes correctly in YAML CI writers by @YousifSala7 in #493
- Fix crash when git branch config has a duplicate key by @dennisdoomen in #511
- Promote main onto the 10.4 release line and fix release version stamping by @ChrisonSimtian in #563
- Make the workflow_dispatch publish path actually publish by @ChrisonSimtian in #566
- Point the nuget-org environment at the real nuget.org profile by @ChrisonSimtian in #569
- Cherry-pick the Fallout.Common.ProjectModel migration path onto 10.4 by @ChrisonSimtian in #590
- Cherry-pick the Fallout.GlobalTool package id onto 10.4 by @ChrisonSimtian in #593
- [Backport/10.4]: Add an additional type converter for
System.Text.Jsonby @ITaluone in #611
📖 Documentation
- chore(release)!: bump version.json 10.3 → 11.0 + add semver policy to CLAUDE.md by @ChrisonSimtian in #220
- docs(agents): adopt AGENTS.md as canonical AI brief; restructure into TOC + sub-files by @ChrisonSimtian in #247
- docs(agents): release-branch model + branch-protection policy for release/vN by @ChrisonSimtian in #278
- docs: release-branch model — CONTRIBUTING + branching-and-release runbook + ADR by @ChrisonSimtian in #295
- docs: adopt calendar versioning + dual-pace edge/stable channels (ADR-0004) by @ChrisonSimtian in #301
- docs(experimental): establish [Experimental] API convention + FALLOUT0xx registry by @ChrisonSimtian in #316
- docs: align CONTRIBUTING/README/roadmap with CalVer + dual-pace channels (ADR-0004) by @ChrisonSimtian in #317
- docs: correct edge version shape to the as-built NB.GV form by @ChrisonSimtian in #319
- Fix remaining stale ChrisonSimtian repo URLs missed by #379 by @ChrisonSimtian in #412
- Replace remaining nuke command text with fallout by @dennisdoomen in #424
- Add obsolete-APIs diagnostic-ID registry (FALLOUTOBS0xx) by @avidenic in #472
- Make release.yml the PR-label source of truth; label PRs at creation by @ChrisonSimtian in #480
- Drop gh-pages from ADR-0008 steady-state branches by @ChrisonSimtian in #484
- Align docs on evergreen target/vCurrent + target/vNext labels by @ChrisonSimtian in #485
New Contributors
- @SonnyRR made their first contribution in #415
- @avidenic made their first contribution in #417
- @taiscrummaster made their first contribution in #467
- @JSap0914 made their first contribution in #468
- @GeorgDangl made their first contribution in #494
Full Changelog: 10.3.47...v10.4.0
⚠️ Breaking Changes since v10.3
Solution, SolutionAttribute, Project, and the solution-graph extension methods moved from Fallout.Common.ProjectModel to Fallout.Solutions.
A transition shim re-exports Solution and SolutionAttribute, so this keeps compiling unchanged:
using Fallout.Common.ProjectModel;
[Solution] readonly Solution Solution;The shim covers the common case only. It does not cover Project or the extension methods. A build that reads the project graph — Solution.GetProject(…), Solution.AllProjects — fails to compile:
error CS0246: The type or namespace name 'Project' could not be found
Fix it with fallout-migrate, which rewrites the namespace and everything else the rename touched:
dotnet tool install -g Fallout.Migrate --version 10.4.0
fallout-migrate <path-to-your-repo>fallout-migrate is not only for moving from NUKE to Fallout. It also handles upgrades between Fallout versions. If you prefer to do it by hand, the change is one line: using Fallout.Common.ProjectModel; becomes using Fallout.Solutions;.
See #619 for the full analysis.
Security
This release resolves five high-severity advisories in System.Security.Cryptography.Xml. 10.4.0 depends on the patched 10.0.10; 10.3.x pinned 10.0.6. If you migrated a repo while on 10.3.x and hit NU1903 on restore, upgrading to 10.4.0 clears it. See #618.
Global tool package id
The tool ships as Fallout.GlobalTool — the same id 10.3.x consumers already pin, so dotnet tool update reaches 10.4.0 with no manifest edit.
Fallout.GlobalTools (plural) existed briefly at 10.4.0-rc.4 and is now unlisted and deprecated. If you installed from it, switch back:
dotnet tool uninstall -g Fallout.GlobalTools
dotnet tool install -g Fallout.GlobalToolSee #575.