Repository navigation
Public API and Releases
src/ZeppelinForms lists its public API in two files, checked on every build by
Microsoft.CodeAnalysis.PublicApiAnalyzers:
| File | Holds |
|---|---|
PublicAPI.Shipped.txt |
The API of the versions already on NuGet |
PublicAPI.Unshipped.txt |
What the version being made adds or removes |
A public member that is in neither file fails the build with RS0016; a line for a member
that no longer exists, with RS0017. A change to a shipped member — a return type, a
nullability — is a removal and an addition: a *REMOVED* line with the old signature, and the
new one.
#nullable enable
*REMOVED*ZeppelinForms.Forms.Form.Font.get -> ZeppelinForms.Drawing.Font?
ZeppelinForms.Forms.Form.Font.get -> ZeppelinForms.Drawing.Font!
The analyzer also guards compatibility: two overloads that both have optional parameters (RS0026), or an overload with more parameters than the one with the optional ones (RS0027), would be ambiguous to code compiled against either — give the new method a name of its own instead.
Run once at the start of every new release branch, right after the previous version went out:
dotnet run tools/ship-api.cs # ship every project of the repository
dotnet run tools/ship-api.cs -- --check # only report, change nothing
Every ordinary line of Unshipped moves into Shipped, every *REMOVED* line deletes its target
from Shipped, and Unshipped is left with its #nullable enable header. A *REMOVED* line
whose target isn't in Shipped stops the tool without changing anything: Shipped is out of
date, and shipping on top of that would hide it.
So the files are never cleared by hand: Unshipped grows during a release and is emptied by the tool when the next one begins.
A release lists them first in the changelog, with what to do instead. While the version is 0.x, a minor version may break the API; a patch version doesn't.
- The release section of
CHANGELOG.md:## [0.17.0] - Codename. - Merge the release branch into
master. - Tag it:
git tag v0.17.0 && git push origin v0.17.0.
The tag starts .github/workflows/release.yml: it runs the tests, packs the NuGet packages with
the version from the tag, publishes them to nuget.org by trusted publishing and to GitHub
Packages, and makes the GitHub release with the changelog's section as its notes and the
Visual Studio extension attached. A tag like v0.17.0-preview.1 is a prerelease of 0.17.0
with 0.17.0's notes.
This wiki is docs/wiki in the repository. .github/workflows/wiki.yml publishes it on every
push to master that changes it, and by hand (Actions › Wiki › Run workflow). Edit the files
in the repository: an edit made in the wiki is overwritten by the next publish.
ZeppelinForms — fully free, for everyone. This wiki is generated from
docs/wiki:
edit it there, not here.
Start
Building the UI
Looks
Behaviour
Tooling