Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 7 additions & 4 deletions CHANGELOG.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -12,12 +12,15 @@ follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

- `AnsiCss.Fixed` in `MarkupString.Ansi` — the stylesheet for the `ms-*` classes. Every one of
those classes is written by this package's HTML emitter, so a consumer rendering HTML with
`MarkupString` + `MarkupString.Ansi` alone can now reach the rules; previously they existed only
in `MarkupString.Html`, a package such a consumer has no reason to take.
`MarkupString` + `MarkupString.Ansi` alone can now reach the rules; in 1.0.0 they existed only in
`MarkupString.Html`, a package such a consumer has no reason to take.

### Deprecated
### Removed

- `HtmlCss.Fixed` in `MarkupString.Html`. It returns `AnsiCss.Fixed` unchanged; move to that.
- **Breaking:** `HtmlCss` in `MarkupString.Html`. Use `AnsiCss.Fixed`; the rules are identical.
Nothing else in that package writes an `ms-*` class, so the type had no business being there.
A removal in a minor is a semver break; 1.0.0 is unlisted, having been published the same day
and consumed by nothing, so there is no one to break.

## 1.0.0 — 2026-09-07

Expand Down
4 changes: 2 additions & 2 deletions MarkupString.Ansi/MarkupString.Ansi.csproj
Original file line numberDiff line numberDiff line change
Expand Up@@ -9,9 +9,9 @@
<NoWarn>CS1591</NoWarn>
<!-- Every build is diffed against the last release, so a removed or re-signatured public member
fails here rather than in a consumer's restore. Raise this to the newest published version
each time one goes out. -->
each time one goes out; drop it for a release that removes public API on purpose, and put
it back straight after. -->
<EnablePackageValidation>true</EnablePackageValidation>
<PackageValidationBaselineVersion>1.0.0</PackageValidationBaselineVersion>
<Description>Terminal styling for MarkupString: colours (16, 256 and truecolor), text attributes and links, an ansi() code parser, and emitters that fold a run's layers into one SGR sequence, HTML span, Pueblo/MXP tag or BBCode tag.</Description>
</PropertyGroup>

Expand Down
18 changes: 0 additions & 18 deletions MarkupString.Html/HtmlCss.cs

This file was deleted.

4 changes: 2 additions & 2 deletions MarkupString.Html/MarkupString.Html.csproj
Original file line numberDiff line numberDiff line change
Expand Up@@ -9,9 +9,9 @@
<NoWarn>CS1591</NoWarn>
<!-- Every build is diffed against the last release, so a removed or re-signatured public member
fails here rather than in a consumer's restore. Raise this to the newest published version
each time one goes out. -->
each time one goes out; drop it for a release that removes public API on purpose, and put
it back straight after. -->
<EnablePackageValidation>true</EnablePackageValidation>
<PackageValidationBaselineVersion>1.0.0</PackageValidationBaselineVersion>
<Description>Raw HTML tag markup for MarkupString — an MXP &lt;send&gt;, an anchor, a span — rendered as itself in the HTML, Pueblo and MXP formats, folded into terminal styling elsewhere, with the stylesheet for the ms-* classes the emitters write.</Description>
</PropertyGroup>

Expand Down
2 changes: 0 additions & 2 deletions MarkupString.Html/PublicAPI.Shipped.txt
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
#nullable enable
MarkupString.Html.HtmlCss
MarkupString.Html.HtmlMarkup
MarkupString.Html.HtmlMarkup.<Clone>$() -> MarkupString.Html.HtmlMarkup!
MarkupString.Html.HtmlMarkup.Attributes.get -> string?
Expand DownExpand Up@@ -29,4 +28,3 @@ static MarkupString.Html.HtmlMarkup.Create(string! tagName, string? attributes =
static MarkupString.Html.HtmlMarkup.operator !=(MarkupString.Html.HtmlMarkup? left, MarkupString.Html.HtmlMarkup? right) -> bool
static MarkupString.Html.HtmlMarkup.operator ==(MarkupString.Html.HtmlMarkup? left, MarkupString.Html.HtmlMarkup? right) -> bool
static MarkupString.Html.HtmlRegistration.WithHtml(this MarkupString.MarkupRegistry! registry) -> MarkupString.MarkupRegistry!
static readonly MarkupString.Html.HtmlCss.Fixed -> string!
2 changes: 2 additions & 0 deletions MarkupString.Html/PublicAPI.Unshipped.txt
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
#nullable enable
*REMOVED*MarkupString.Html.HtmlCss
*REMOVED*static readonly MarkupString.Html.HtmlCss.Fixed -> string!
4 changes: 2 additions & 2 deletions MarkupString/MarkupString.csproj
Original file line numberDiff line numberDiff line change
Expand Up@@ -9,9 +9,9 @@
<NoWarn>CS1591</NoWarn>
<!-- Every build is diffed against the last release, so a removed or re-signatured public member
fails here rather than in a consumer's restore. Raise this to the newest published version
each time one goes out. -->
each time one goes out; drop it for a release that removes public API on purpose, and put
it back straight after. -->
<EnablePackageValidation>true</EnablePackageValidation>
<PackageValidationBaselineVersion>1.0.0</PackageValidationBaselineVersion>
<Description>Immutable styled text: a string plus layered markup runs, rendered to ANSI, HTML, Pueblo, MXP, BBCode or plain text through a registry of emitters, and round-tripped through JSON.</Description>
</PropertyGroup>

Expand Down
13 changes: 9 additions & 4 deletions docs/releasing.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -33,9 +33,14 @@ build if the two ever disagree.
The tag triggers `.github/workflows/release.yml`. `workflow_dispatch` with the tag name as input
does the same thing by hand.

4. After the **first** ever release, set `PackageValidationBaselineVersion` to it in each of the
three package files. Package validation then diffs every later build against the published
baseline and fails on a break.
4. After the release lands on nuget.org, set `PackageValidationBaselineVersion` to it in each of
the three package files. Package validation then diffs every later build against that published
surface and fails on a break — including one you did not mean to make.

A release that *does* remove or re-signature public API is the exception: drop the property for
that build, release, then set it to the new version. `PublicAPI.Unshipped.txt` still records each
removal as a `*REMOVED*` line, so the removal is reviewed rather than merely permitted — and
unlist the version being broken away from, so nobody resolves to a surface that no longer holds.

## What the release workflow does

Expand DownExpand Up@@ -81,4 +86,4 @@ repository was set up; the first successful push claims them.
- [ ] `PublicAPI.Unshipped.txt` promoted to `PublicAPI.Shipped.txt` in all three packages
- [ ] Trusted publishing policy exists on nuget.org for `SharpMUSH/MarkupString` (first release only)
- [ ] Tag pushed, `Release` workflow green
- [ ] `PackageValidationBaselineVersion` set (after the first release only)
- [ ] `PackageValidationBaselineVersion` raised to the version just published