Skip to content

Releasing Strixonomy

Maintainer checklist for publishing crates, binaries, and the VS Code extension.

Version bump

  1. Update [workspace.package].version in root Cargo.toml on GitHub
  2. Update docs/TAGGED_RELEASE in the release commit that cuts that tag — public install pins must equal the published GitHub Release version (never bump pins on a working branch before the tag exists; push the tag the same day you merge the ship commit)
  3. Update extension/package.json and extension/webview-ui/package.json version
  4. Update CHANGELOG.md on GitHub and docs/changelog.md
  5. Regenerate NOTICES on GitHub if dependencies changed (cargo license recommended)
  6. Sync user-facing docs (see checklist below)

Documentation sync checklist (every release)

Tier-1 capability truth (must match SHIPPED — do these first)

Source of truth: docs/SHIPPED.md and docs/supported-formats.md. Every Tier-1 surface below must agree on writable formats, current tagged version, and evaluate-pack caveats (byte-identical XML is a non-goal; write-back itself must not be described as planned/read-only after it ships).

Full sync (after Tier-1)

Tag and publish

Push a tag matching [workspace.package].version in Cargo.toml:

git tag v0.27.0   # must match [workspace.package].version in Cargo.toml
git push origin v0.27.0

The release workflow on GitHub:

  1. Preflight (tag gates): tag↔version match, doc version sync, rustfmt, and a green ci.yml run on the tagged SHA (waits briefly if CI is still in progress)
  2. LSP matrix (parallel with publish after preflight): multi-platform strixonomy-lsp binaries
  3. Publish crates.io (starts after preflight; overlaps LSP builds): workspace crates in dependency order with --no-verify, idempotent skip of already-uploaded versions, waiting out 429s (new crate names: burst 5 then ~1/10 min; new versions of existing crates: burst 30 then ~1/min)
  4. Package + GitHub Release (after LSP matrix): Linux x64 strixonomy CLI, per-platform LSP archives, multi-platform VSIX, Open VSX (if OVSX_PAT is set), SHA256SUMS + NOTICES

Requires the CARGO_REGISTRY_TOKEN repository secret. For Open VSX (Cursor), set OVSX_PAT — see marketplace-publish.md.

Published crates (dependency order)

strixonomy-corestrixonomy-parserstrixonomy-owlstrixonomy-obostrixonomy-editstrixonomy-diagnosticsstrixonomy-catalogstrixonomy-diffstrixonomy-docsstrixonomy-swrlstrixonomy-refactorstrixonomy-querystrixonomy-reasonerstrixonomy-robotstrixonomy-plugin (+ plugin crates) → strixonomy-lspstrixonomystrixonomy-cli

VS Code Marketplace and Open VSX

P0 — manual Marketplace publish

The release workflow publishes crates.io, GitHub Release assets, and Open VSX automatically. VS Code Marketplace publish is manual — run npx vsce publish after the tag (see marketplace-publish.md).

See marketplace-publish.md. Open VSX listing: open-vsx.org/extension/strixonomy/strixonomy.

Verify artifacts

release-integrity.md — SHA256SUMS, --locked installs.

Security

Report vulnerabilities per security.md — not via public issues.

Read the Docs

The documentation site is built with MkDocs and hosted at strixonomy.readthedocs.io.

  1. Read the Docs project slug: strixonomy (this sets the *.readthedocs.io subdomain).
  2. RTD reads .readthedocs.yaml on GitHub and installs docs/requirements.txt.
  3. mkdocs.yml site_url must match the live subdomain (https://strixonomy.readthedocs.io/).
  4. Pushes to main rebuild the latest version.

Versioning model

RTD version Git ref Audience
latest main In-development docs
stable Latest semver tag (auto) Default for current release users
v0.13.0 Tag v0.13.0 Frozen docs for that release
release-v0.13.0 Branch release/v0.13.0 Release stabilization before tagging

RTD slugifies branch names by replacing / with - (release/v0.13.0release-v0.13.0).

Automated activation (GitHub Actions)

The readthedocs workflow activates and builds a matching RTD version when you push:

  • a release branch (release/v*), or
  • a semver tag (v*.*.*).

One-time setup: add repository secret READTHEDOCS_API_TOKEN (RTD account token) with access to project strixonomy.

To activate an existing release branch immediately (e.g. after adding the secret):

  1. Actions → Read the Docs → Run workflow, or
  2. Locally: READTHEDOCS_API_TOKEN=… ./scripts/readthedocs-activate-version.sh release/v0.13.0

Automation rules are not configurable in .readthedocs.yaml; add these once under Admin → Automation rules so new refs activate even if the GitHub Action is unavailable:

Description Match Type Action
Activate release branches Custom: ^release/v\d+\.\d+\.\d+$ Branch Activate version
Activate semver tags SemVer versions Tag Activate version

RTD rules apply only to new refs created after the rule is saved. Use the GitHub Action or readthedocs-activate-version.sh for branches that already exist (e.g. release/v0.13.0).

Local preview: pip install -r docs/requirements.txt && mkdocs serve.