Skip to content

release: 0.3.0 - #56

Merged
elvogel merged 1 commit into
mainfrom
release/0.3.0
Oct 16, 2026
Merged

elvogel merged 1 commit into
mainfrom
release/0.3.0

Conversation

@elvogel

@elvogel elvogel commented Oct 16, 2026

Copy link
Copy Markdown
Contributor

0.3.0, dated and ready to tag.

A minor bump, not a patch, because conversion output changes. A paragraph indented with four
or more tabs is no longer turned into a code block (#38), an interrupted numbered list keeps its
numbering (#39), and a non-numeric w:ilvl degrades rather than aborting the conversion (#37).
CONTRIBUTING.md reserves the minor bump for exactly this, and 0.2.0 was made minor for the same
reason.

It also narrows --stylesheet, which is the other reason a patch number would have been
wrong. Every transform now runs under a regular-expression time limit and a resource policy
(#48): reads are confined to the stylesheet's own directory, so a stylesheet that read elsewhere
on the disk is refused where it was allowed before. A blown limit or a refused read exits 2, the
usage code. --regex-timeout <seconds> moves the limit; ten seconds by default, none removes
it.

And it answers a high-severity advisory against the engine 0.2.5 shipped.
GHSA-5697-c8qg-472f names every PhoenixmlDb.Xslt up to 2.7.0 and is patched in 2.8.0; this
release pins 2.9.0. Output is byte-identical over the corpus on both engine bumps.

Contents

  • Directory.Build.props -- <Version> 0.2.5 -> 0.3.0.
  • CHANGELOG.md -- the Unreleased entries moved into ## [0.3.0] — 2026-10-15, the two
    Fixed sections merged into one, and a lead paragraph saying why the bump is minor.
  • The two lock files that record a ProjectReference as a version range, regenerated with
    --force-evaluate. --locked-mode refuses the old files after a version bump.

Verified before tagging, all nine steps

Step Result
restore --locked-mode exit 0
build -c Release 0 warnings, 0 errors
test, perf gate excluded 394 total, 393 pass, 1 skip
performance gate alone 1 test, passes
pack Docmd.Cli.0.3.0.nupkg
install from the package ok
the installed tool runs reports 0.3.0
embedded stylesheet parses ok
the installed tool converts 76,154 words, 0 lost, 61 s

The one skip is the corpus audit, which is opt-in through DOCMD_CORPUS and never runs in CI.

After this merges, v0.3.0 goes on the merge commit and the release workflow publishes to
nuget.org. That push is public and cannot be taken back -- a published version can only be
unlisted.

🤖 Generated with Claude Code

https://claude.ai/code/session_018wZEgtuzaZPswykiGEBxbz

A minor bump because conversion output changes, and because a stylesheet the
caller passes is now bounded in time and in what it may read.

  Conversion output changes: a paragraph indented with four or more tabs is no
    longer turned into a code block (#38), an interrupted numbered list keeps
    its numbering (#39), and a non-numeric w:ilvl degrades rather than aborting
    the conversion (#37).
  --stylesheet now runs under a regular-expression time limit and a resource
    policy (#48). Reads are confined to the stylesheet's own directory, so a
    stylesheet that read elsewhere on the disk is refused where it was allowed
    before. A blown limit or a refused read exits 2, the usage code.
  --regex-timeout <seconds> is the new flag that moves that limit. Ten seconds
    by default; "none" removes it.
  PhoenixmlDb.Xslt 2.5.1 -> 2.9.0, taken for GHSA-5697-c8qg-472f (high), which
    names the engine 0.2.5 shipped and is patched in 2.8.0. A shadow attribute
    read the real process environment while the stylesheet compiled. Output is
    byte-identical over the corpus on both bumps.

Verified before tagging, all nine steps
  restore --locked-mode          exit 0
  build Release                  0 warnings, 0 errors
  test, perf gate excluded       394 total, 393 pass, 1 skip
  performance gate alone         1 test
  pack                           Docmd.Cli.0.3.0.nupkg
  install from the package       ok
  the installed tool runs        reports 0.3.0
  embedded stylesheet parses     ok
  installed tool converts        76,154 words, 0 lost, 61 s

The lock files move with the version: a ProjectReference is recorded there as a
version range, so [0.2.5, ) becomes [0.3.0, ) and --locked-mode refuses the old
file. Regenerated with --force-evaluate in this commit.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018wZEgtuzaZPswykiGEBxbz
@elvogel
elvogel merged commit ee11b67 into main Oct 16, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant