Changelog#

This page lists notable changes in each release of the sysand command-line client. For installation and upgrade instructions, see Installation.

v0.2.0 - 2026-08-04#

The highlight of this release is the new sysand auth command for credential management:

Credentials are stored in the OS keychain (meaning Sysand does not manage their storage).

A minor breaking change for project creation: sysand init now requires providing a publisher (via --publisher), previously providing a publisher was optional.

There are also minor breaking changes for bindings users:

  • relative_path_root/relativePathRoot have been removed from info interfaces, as it effectively did nothing.

  • In Java bindings, project usages array now contains interface type InterchangeProjectUsage, with specific usage types (with currently InterchangeProjectUsageResource and InterchangeProjectUsageDirectory implementing it)

New experimental command sysand experimental has been added. Its interface is not yet stable and should be expected to change. See sysand experimental --help for more information.

Breaking changes#

  • feat!: require publisher to be specified when initializing the project #470

  • fix!: drop relative_path_root from the file resolver and info bindings #469

New features added#

  • feat: persist index credentials in the OS keyring (sysand auth) #453

  • feat: relative directory usage type #426

Enhancements made#

  • fix(ux): tone down and reduce the amount of warnings about ignored std libs #461

  • feat(discovery)!: require explicit api_root for an index API #478

  • chore: don’t log the failure to check for old sysand_env if it does not exist #484

Bugs fixed#

  • fix: set zip date to 1980-01-02, fix CI and test feature gating #488

  • fix(cli): wrap long doc comments #471

Maintenance and upkeep improvements#

  • maint(java): support arbitrary cargo target directories #483

  • test: more pubgrub tests #481

  • chore: drop needless borrows flagged by clippy 1.97 #457

  • fix(test): stop the load_configs test reading the developer’s real config #456

  • refactor(core): generalize project identifiers and usage resolution beyond IRIs #482

  • fix: fail on env read errors, simplify logic #476

  • fix: include error cause chains consistently, do not silently discard errors #472

  • refactor(core): make LocalSrcProject fields private #468

  • feat(core): resolve typed usages instead of assuming an IRI #467

  • refactor(core): add Identifier newtype for project resolution identity #466

  • refactor: make ProjectRead::project_root() required #465

Documentation improvements#

  • docs(design): specify v1/whoami in the index API protocol #462

Continuous integration improvements#

  • ci: pin the prek job’s Rust toolchain to rust-toolchain.toml #454

Other merged PRs#

  • fix(deps): update rust crate gix to 0.86.0 #486

  • chore(deps): update all github actions #485

  • fix(deps): update rust crate gix to 0.85.0 #480

  • chore(deps): update all github actions #479

  • fix: do not silently discard errors #477

  • chore: improve sources resolution #475

  • chore: minor naming and wording improvements #474

  • chore: cleanup #473

  • chore: match pre-commit to rust-toolchain Rust version as intended #463

  • chore(deps): update all non-major dependencies #459

  • chore(deps): update all github actions #458

v0.1.7 - 2026-07-14#

This release improves the output when trusted publishing fails to help diagnose the problem.

Bugs fixed#

  • fix(publish): surface index error details, drop redundant warn-then-error #449

v0.1.6 - 2026-07-14#

This release adds index URL templates, which enables using a GitLab repository as a package index directly, whereas previously this required using GitLab pages. See URL templates reference and example Sysand index GitLab repository for details.

New features added#

  • feat: support URL templates for index locations ({path} / {path_raw}) #440

Enhancements made#

  • bindings: small improvements to Python API #411

  • kpar: write pretty-printed .project.json and .meta.json to the kpar #434

Documentation improvements#

  • docs: remove readme disclaimer and mention official/private index #433

Other merged PRs#

  • chore(deps): bump deps to fix cargo audit findings #445

  • chore(deps): update all non-major dependencies #442

  • chore(deps): update all github actions #441

  • chore(deps): update all github actions #436

  • chore(deps): update docker.io/library/ubuntu:24.04 docker digest to 4fbb8e6 #435

v0.1.5 - 2026-07-02#

The main change in this release is support for trusted publishing, for sysand publish. By default, supported CI environments, currently GitHub Actions and GitLab CI including Enterprise or self-managed provider domains, use trusted publishing automatically before falling back to SYSAND_CRED_<x>_BEARER_TOKEN. In other environments, publishing works as before. Trusted publishing can be configured via the --trusted-publishing flag on sysand publish. See sysand publish --help for more information.

New features added#

  • feat: add –trusted-publishing=auto flag to sysand publish #420

Enhancements made#

  • feat: sign and attest provenance of published container images #423

  • feat: use consistent path canonicalization everywhere, most relevant on Windows #414

Maintenance and upkeep improvements#

  • feat: validate paths consistently for lockfile and publishing #419

  • maint: consistently format errors #418

  • chore(bindings/js): vendor abandoned console_error_panic_hook #413

  • refactor: turn InterchangeProjectUsageG into an enum #412

  • chore: update to Rust 1.96 and use newly stable assert_matches #410

Other merged PRs#

  • chore(deps): update dependency org.sonatype.central:central-publishing-maven-plugin to v0.11.0 #425

  • chore(deps): update all github actions #424

  • chore(deps): update all github actions to v2.81.10 #417

  • chore(deps): update docker.io/library/alpine:3.24 docker digest to 28bd5fe #416

v0.1.4 - 2026-06-16#

This release contains a fix for a bug that could truncate large metadata files when building a KPAR.

sysand build for large projects and sysand include when many files are provided are now much faster.

sysand publish now checks more requirements locally, instead of relying on the server, which results in somewhat nicer and more actionable error messages.

Enhancements made#

  • feat: improve performance of include, build and exclude #406

  • feat: perform most of KPAR pre-publish checks before publishing #400

Maintenance and upkeep improvements#

  • chore: fix inline comment about default index #405

Other merged PRs#

  • chore(deps): update all non-major dependencies #403

  • chore(deps): update all github actions #402

v0.1.3 - 2026-06-12#

This release includes a single fix for a bug that could incorrectly report the offending file in case .project.json or .meta.json failed to parse.

Bugs fixed#

  • fix: don’t hardcode file name in error #399

v0.1.2 - 2026-06-11#

This release includes only packaging and installation script improvements. Notably, we now provide a static Linux build with musl libc, and have lowered glibc requirement for non-musl from 2.39 to 2.35.

The installation scripts are now configured via environment variables instead of flags, so automation using them (e.g. CI) needs to be updated. The scripts are hosted at:

API and breaking changes#

  • feat!: rework installation scripts to improve UX and support alpine etc #394

New features added#

  • feat: publish an alpine based image variant with -alpine suffixed tags #393

  • feat: add linux musl build, make GNU build require only glibc 2.35+ #391

v0.1.1 - 2026-06-08#

This is a bugfix release. Most notably, it fixes project duplication in .sysand/env.toml.

It also changes the default behavior of sysand build to update checksums and exported symbols, meaning --update-meta flag is no longer needed (it will still be accepted for now, but will warn that it’s the default). A flag --keep-index to not update exported symbols is now provided instead.

Enhancements made#

  • feat(build): update index and checksum by default, provide opt out for index #382

Bugs fixed#

  • fix(sync): don’t duplicate editable projects in env.toml that have no identifiers, include publisher in lockfile #381

Maintenance and upkeep improvements#

  • fix: make docker image release automation work with .tar.gz #375

Documentation improvements#

  • fix(docs): correct links #384

  • docs: move user documentation out of repo #383

  • docs: remove flakey workaround for the header’s link targets #380

  • docs: migrate documentation from mdbook to myst-md #379

  • docs: rename to use hyphen over underscores in url impacting folders/files #376

Continuous integration improvements#

  • fix: ensure docker image is built when github releases are published #374

Other merged PRs#

  • chore(deps): update all github actions to v2.81.1 #387

  • chore(deps): pin dependencies #386

v0.1.0 - 2026-06-01#

This is a big release. The main changes are the support for the new Sysand Index at sysand.com, and changing the local environment structure to have human readable directory names. Projects from the new index can now be referred to by the new publisher/name syntax in sysand add and sysand remove, instead of an IRI.

Lock file (sysand-lock.toml) format has changed, and has to be regenerated by running sysand lock.

Local Sysand environment will now have a different structure and live in .sysand; existing sysand_env directories won’t be used anymore and can be removed. To populate the new environment with projects recorded in lock file, run sysand sync.

Index structure has also changed, so all indexes will need to be recreated using the new sysand index commands.

API and breaking changes#

  • feat!: implement the new sysand index read protocol #288

  • feat!: use new local environment structure #297

  • feat!: rename sysand_env to .sysand #336

  • feat!: make all KPAR sources have kpar_digest and src sources have checksum #352

  • feat!: default to new index and prepare docs for the 0.1.0 release #356

  • feat!: make standard library identifiers not use urn:kpar: #345

New features added#

  • feat: support sysand add/remove PURL shorthand #354

  • feat: add index management commands #335

  • feat: support cloning local kpars #363

  • feat: add installation scripts #370

  • feat: add Dockerfile and automation to publish on/for releases #362

  • feat: add Java bindings for writing .project.json and .meta.json #349

  • feat(build): bundle LICENSES into kpar #332

  • feat(build): bundle CHANGELOG.md into kpar #331

Enhancements made#

  • Don’t update metadata by default when building projects #298

  • feat: make built KPARs reproducible by setting OS/time metadata to fixed values #372

  • Improve ‘sysand info’ command output #292

Bugs fixed#

  • fix: remove old symbols if the same file is included multiple times #359

Maintenance and upkeep improvements#

  • feat(dockerimage): provide flexible tags #365

  • release: prepare 0.1.0-rc.1 #357

  • release: prepare 0.1.0-alpha.1 #340

  • refactor: centralize sha256 calculations, update sha2 to 0.11 and gix to 0.83 #339

  • refactor: don’t use test_ prefix for tests #322

  • prepare 0.0.12-dev.1 release #319

  • chore: transition from xz to gzip compression on tars #369

Documentation improvements#

  • docs: refine release instructions #341

  • docs: reduce complexity of RELEASE.md with latest github-activity #328

  • docs: declare changelog procedure, add backfilled changelog, and introduce commit/PR title practice #323

  • docs: make navigation sections not expanded #321

  • Add more details to RELEASE.md #318

Continuous integration improvements#

  • ci: release procedure rework #314

Other merged PRs#

  • fix(deps): update dependency org.apache.maven:maven-plugin-api to v3.9.16 #351

  • chore(deps): update all github actions #350

  • chore(deps): update taiki-e/install-action action to v2.77.5 #337

  • chore(deps): update dependency org.apache.maven.plugins:maven-invoker-plugin to v3.10.1 #330

  • chore(deps): update all github actions #329

  • chore(deps): update dependency org.apache.maven.plugins:maven-invoker-plugin to v3.10.0 #316

  • chore(deps): update taiki-e/install-action action to v2.75.23 #315

v0.0.11 - 2026-04-30#

New features#

  • [workspaces] Add metadata field to .workspace.json to allow setting metadata for the whole workspace (#238). Fields from there are read and replace keys from .meta.json when building the kpars. Currently only metamodel is supported. As with all workspace functionality, this is expected to change in the future.

  • [workspaces] Allow specifying custom meta.index for each project in workspace (#241). Currently this functionality is only exposed through Java bindings.

  • Add sysand publish command (#249). It allows publishing to an index. Note: this is not ready for use, as beta.sysand.org index does not support publishing via an API yet.

  • Include README.md when building the kpar if the file is present (#239)

  • Add environment metadata file env.toml, which resides in sysand_env (#175). Currently entries.txt and per-project versions.txt are still also used, but will be removed in the future.

  • Change formatting/linting to use pre-commit hooks, and use prek to run those hooks in CI instead of a separate implementations in **/run_chores.sh and CI (#250).

  • Move Rust unit tests into separate files; for each file code.rs, tests are in code_tests.rs (#282).

v0.0.10 - 2026-03-19#

Added#

  • Support git usages, using either regular or git+ IRIs.

  • Support for configuring usage sources. See docs for details.

  • Allow adding usages by path: sysand add --path ../path/to/the/usage. Both relative and absolute paths are supported. Note that this will likely not work for project sharing, since usages are stored in .project.json as absolute paths, and so are unlikely to be available on other computers at the same location.

  • Support publisher field in .project.json. This is optional to provide when initializing the project and defaults to “untitled”. Support for projects without a publisher field remains unchanged.

Changed#

  • Bump minimum supported Python version to 3.10 (from 3.8).

Improved#

  • Support TLS 1.3 for all platforms. Previously only TLS <=1.2 was supported on Windows and macOS.

  • Send User-Agent header for all HTTP(S) requests. Value is sysand/<version>.

  • Improved logging, especially for HTTP requests.

  • Improved error reporting, especially from the usage/dependency resolvers.

Documentation#

v0.0.9 - 2026-02-03#

No changelog entry was written.

v0.0.8 - 2026-01-22#

Changes#

  • When sysand CLI crashes, it now provides a nice message to users that suggests creating a bug report (#153)

v0.0.7 - 2025-12-12#

Changes#

  • Added clone command that enables cloning a package for editing and playing around (#137). See sysand clone --help for details.

  • Unified init and new commands into just init. To get previous behaviour of sysand new example_project, use sysand init example_project.

  • Improved the command for specifying the metamodel (#128): now instead of writing the full metamodel URL, one needs to specify only the date.

  • Package indexes can now be specified in sysand.toml (#121)

  • Unify the style of messages reported by CLI.

v0.0.6 - 2025-11-14#

Changes#

  • Added workspace support (#101). Warning: it is considered experimental and can be changed or removed at any time. Current features:

    • Projects belonging to the workspace can be listed in .workspace.json.

    • Sysand can build kpar archives for all projects in workspace by running sysand build in workspace root directory

v0.0.5 - 2025-11-07#

Changes#

  • Change lockfile to have better structure and rename it from SysandLock.toml to sysand-lock.toml (#58). Only the new lockfile format is supported. Lockfile can be regenerated by running sysand lock.

  • Warn users that SysML/KerML standard library packages are not installed by default to prevent confusion (#94).

  • Improve error reporting. Errors now report their immediate context, e.g. when failing to read a file, file name is now reported (#87)

  • Add metadata for newer SysML/KerML standard libraries. This speeds up any commands that determine project usages, such as add, sync, install, etc. (part of #74)

Fixes#

  • Use relative paths in lockfile. This fixes portability to other systems (#85).

v0.0.4 - 2025-10-21#

Changes#

  • Fix errors when system temporary directory and sysand_env reside on different mount points or drives. (#81)

v0.0.3 - 2025-10-17#

No changelog entry was written.

v0.0.2 - 2025-09-18#

No changelog entry was written.

v0.0.1 - 2025-09-17#

No changelog entry was written.