crucible.cli 1.2.0

dotnet tool install --global crucible.cli --version 1.2.0
                    
This package contains a .NET tool you can call from the shell/command line.
dotnet new tool-manifest
                    
if you are setting up this repo
dotnet tool install --local crucible.cli --version 1.2.0
                    
This package contains a .NET tool you can call from the shell/command line.
#tool dotnet:?package=crucible.cli&version=1.2.0
                    
nuke :add-package crucible.cli --version 1.2.0
                    

Crucible

Static documentation generator that transforms Markdown into HTML through an XML intermediate representation and XSLT 4.0 transformation.

Packages

Package Description Install
Crucible.Cli Command-line tool dotnet tool install -g Crucible.Cli
Crucible.Extensions Extension library (Mermaid diagrams, plugin API) Library — reference in your project

Quick start

# Install the CLI
dotnet tool install -g Crucible.Cli

# Create a new docs project
crucible init

# Build the site
crucible build

Features

  • Markdown in, HTML out — write docs in Markdown with YAML frontmatter
  • XSLT-powered — transforms via the PhoenixmlDb XSLT 4.0 engine
  • Client-side search — Lunr.js with pre-built index
  • Dark mode — automatic with manual toggle
  • SEO — Open Graph, canonical links, sitemap.xml
  • Extensible — plugin model for custom Markdown processing
  • LLMs.txt — auto-generated site overview for AI consumption

Documentation

Full documentation at phoenixml.dev

License

Apache 2.0

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

This package has no dependencies.

Version Downloads Last Updated
1.2.0 47 9/18/2026
1.1.76 105 9/2/2026
1.1.73 127 8/4/2026
1.1.63 121 7/31/2026
1.1.62 121 7/29/2026
1.1.47 159 4/29/2026
1.1.46 116 4/29/2026
1.1.45 116 4/29/2026
1.0.0 176 3/20/2026

**Takes `PhoenixmlDb.Xslt` from 1.6.13 to 2.1.0.** No Crucible source changed; the engine did.

Minor rather than patch because `crucible.cli` **embeds** the engine — `PackAsTool` ships the
full publish output — so the engine's breaking change is a breaking change for any stylesheet
this tool renders.

### Why this release matters more than a version bump

The published `crucible.cli 1.1.76` carries, by its own `deps.json`:

```
PhoenixmlDb.Core/1.6.7   PhoenixmlDb.XQuery/1.6.12   PhoenixmlDb.Xslt/1.6.13
```

That is the pairing recorded as known-bad — Xslt 1.6.13 depending on XQuery 1.6.12, the artifact
that `check-release-train.sh` was written to prevent. crucible builds phoenixml.dev, so our own
documentation has been rendered by the combination we flagged. This release ends that.

### Breaking, inherited from the engine

`ft:*` and `dbxml:metadata` no longer exist; they are `phx:*`, with `phx` predeclared. A
stylesheet or query using the old names fails at compile time rather than behaving differently.
See `PhoenixmlDb.Xslt` 2.0.0 for the full list.

### Verified

134 tests pass, unchanged from the 2.0.0 pin.

**The rendered site is byte-identical.** Both pipeline stages were run against the same docs
source (`phoenixml-docs` @ `8da51b6`, clean) on each engine and diffed:

| stage | files differing |
|---|---|
| `ParseOnly` — Markdown to intermediate XML | 0 of 116 |
| `TransformOnly` — XML to HTML | 0 of 116 |

The arms were confirmed to differ before trusting that result — an A/B that silently runs one
engine twice produces exactly the same clean diff. Read from each build's `deps.json`:

```
control:  PhoenixmlDb.Xslt/2.0.0  PhoenixmlDb.XQuery/2.0.0
new:      PhoenixmlDb.Xslt/2.1.0  PhoenixmlDb.XQuery/2.1.0
```

So a three-minor-version engine jump changes this site's output by nothing, and that is measured
rather than assumed.

### Also

`check-release-train.sh` compares engine pins against `<EngineTrain>` in
`Directory.Packages.props` rather than crucible's own release version, which could never match.
Before that fix no crucible tag could pass its own gate.