cli-v1.1.0-beta.4
Pre-release
Pre-release
1.1.0-beta.4 — September 2, 2026
A license change every consumer should read, a composed parameter now drawn through its own generator, and a long list of guard-reading fixes — several of them closing the known limitations 1.1.0-beta.3 shipped with.
⚠️ Breaking changes
- JustDummies is now licensed under PolyForm Internal Use 1.0.0, not Apache 2.0 — source-available, not open source. You may read, build, modify and run the tool for your own or your company's internal business operations; you may not distribute the software. Versions already published on NuGet are untouched and keep the license they shipped with. Contributions are now governed by a Contributor Agreement.
- A composed parameter is now scaffolded as
new AnyOrderReference()— the generator its own type owns — instead of a recipe derived from its factory's guards and inlined at every call site. Where the target compilation does not carry that generator yet,CS0246at that line names what to scaffold (ADR-0089). - The call for a composed parameter now goes straight into the constructor's initializer, and any remaining factory method is renamed to what it returns —
AnyValidQuantity()rather thanQuantityFactory(). - A nullable value-type parameter is now scaffolded as
.AsNullable(), not.As(value => (T?)value)— needs aJustDummiesrelease carryingAsNullable()(ADR-0094); a project on an older package still gets the previous hop. - The
factoryprovenance word, andcandidateson a parameter, are gone from--format json— a parameter is never left open over an ambiguous factory anymore, so both always read empty.
🐛 Bug Fixes
- A type refused for being abstract or generic now says so (
TypeIsAbstract/TypeIsGeneric) instead of being reported as having no constructor, and the same refusal now also names the static-factory route where several eligible factories tie. - A guard written in a project on another target framework (a
netstandard2.0library under anet8.0test project, say) is read again instead of silently ignored. - A collection of interface-typed collections (
List<HashSet<T>>for aList<ISet<T>>parameter) no longer emits a file that fails to compile. - A
readonly structbehind a private constructor and a publicCreatenow scaffolds through its factory instead of a zero-initialized default. - Every spelling of the whitespace rejection now reads as
.NotBlank()instead of.NonEmpty()— needs the matchingJustDummiesrelease carryingNotBlank(). - A guard reached through a null-conditional receiver, a
throwinside aswitchassignment, or a guard-library call in return position or a local declaration's initializer is now markedunread guardsinstead of passed over in silence. - A guard a
: this(…)/: base(…)initializer, or a factory built over a guarded private constructor, merely delegates to is now folded onto the parameter that hands it there — closing several shapes 1.1.0-beta.3 read silently wrong or not at all. - A
paramshand-off in normal form is read again; only the expanded form is refused. - A null-forgiving hand-off (
value!) folds the guard instead of dropping it, read directly or through a delegated constructor. - A self-delegating
: this(…)initializer no longer overflows the stack. - A
.Count/.Lengthguard on a parameter that is neither a string nor a collection is now markedunread guardsinstead of read against the wrong family. - A guard a jump can skip from inside a
using,lockorcheckedblock is now markedunread guards, not only at the top of the body. - A distinct floor over
char,byte,sbyte,Int16/UInt16,Half, or an enum's domain is now markedunread guardspast what the element can actually produce, instead of written with confidence. - An enum with no declared member now leaves the parameter open instead of scaffolding a call the library itself refuses.