From 46d03c83a1eba79e0f85fb197cc7f6153d8100a5 Mon Sep 17 00:00:00 2001 From: Riccardo Finizio <19975987+BlkHd@users.noreply.github.com> Date: Fri, 16 Oct 2026 13:12:58 +0200 Subject: [PATCH 1/2] Release 0.1.0, the first version without the preview suffix - Directory.Build.props: Version 0.1.0; lock files and SBOM regenerated - CHANGELOG: section [0.1.0] - 2026-10-16 with the entries that were under Unreleased - README, SECURITY, CONTRIBUTING, SUPPORT and the guides speak of version 0.1.0 instead of the preview; examples use the tag v0.1.0 Co-Authored-By: Claude Opus 5.5 --- .github/ISSUE_TEMPLATE/bug_report.yml | 4 +- .github/workflows/release.yml | 2 +- CHANGELOG.md | 11 ++++- CONTRIBUTING.md | 2 +- Common/Log.Windows/packages.lock.json | 4 +- Directory.Build.props | 2 +- README.md | 15 +++---- SECURITY.md | 4 +- SUPPORT.md | 5 ++- WCS/Wcs.Api.Client/src/packages.lock.json | 2 +- .../Wcs.Api.Client.Test/packages.lock.json | 42 +++++++++---------- .../src/packages.lock.json | 2 +- WCS/Wcs.Engine/src/packages.lock.json | 6 +-- .../tests/Wcs.Engine.Test/packages.lock.json | 20 ++++----- WCS/Wcs.Host/src/packages.lock.json | 28 ++++++------- .../tests/Wcs.Host.Test/packages.lock.json | 38 ++++++++--------- WCS/Wcs.Viewer/src/packages.lock.json | 8 ++-- WCS/Wcs.WebEditor/src/packages.lock.json | 4 +- .../packages.lock.json | 4 +- .../Wcs.WebEditor.Test/packages.lock.json | 8 ++-- .../Wcs.Wms.Client.Test/packages.lock.json | 2 +- WCS/tools/Wcs.DbTool/packages.lock.json | 18 ++++---- .../tests/Wcs.DbTool.Test/packages.lock.json | 20 ++++----- docs/README.md | 5 ++- docs/integration/host-api.md | 4 +- docs/integration/supported-platforms.md | 2 +- docs/integration/writing-a-wms-adapter.md | 4 +- docs/known-limitations.md | 8 ++-- docs/publication-checklist.md | 12 +++--- docs/release-process.md | 6 +-- docs/versioning-and-compatibility.md | 7 ++-- samples/Wcs.SampleWms.Test/packages.lock.json | 12 +++--- sbom/wcs.cdx.json | 6 +-- tools/Test-PublicRelease.ps1 | 2 +- .../Wcs.ContractCheck/src/packages.lock.json | 36 ++++++++-------- .../Wcs.ContractCheck.Test/packages.lock.json | 40 +++++++++--------- 36 files changed, 204 insertions(+), 191 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 0ef18e7..0ea5d23 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -20,8 +20,8 @@ body: id: version attributes: label: Version or commit - description: The release (for example `0.1.0-preview.1`), or the commit you built from (`git rev-parse --short HEAD`). - placeholder: 0.1.0-preview.1 or a1b2c3d + description: The release (for example `0.1.0`), or the commit you built from (`git rev-parse --short HEAD`). + placeholder: 0.1.0 or a1b2c3d validations: required: true diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5c05f67..855a9a7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -4,7 +4,7 @@ # (framework-dependent: they need the .NET 10 runtime, ASP.NET Core included, on the machine), zips # each one with the licence files, adds the SBOM, writes SHA256SUMS.txt and attaches everything to a # DRAFT GitHub release whose text is the version's section of CHANGELOG.md. A maintainer reviews the -# draft and publishes it by hand. Nothing is pushed to NuGet: the preview is distributed as source. +# draft and publishes it by hand. Nothing is pushed to NuGet: the WCS is distributed as source. name: Release on: diff --git a/CHANGELOG.md b/CHANGELOG.md index 26407cd..c50eb1f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,14 @@ released, and how its section here becomes the text of the GitHub release, is in ## [Unreleased] +Nothing yet. + +## [0.1.0] - 2026-10-16 + +The first release without the preview suffix. It is distributed as source, like the preview, and the +rules of [versioning and compatibility](docs/versioning-and-compatibility.md#before-10) apply from here: +a patch never breaks what that page lists; a minor may, and says so in this file. + ### Added - WMS contract: two **optional** routes, 44 and 45; a WMS that does not offer them answers `404` or @@ -119,5 +127,6 @@ internal demo scripts. See [docs/known-limitations.md](docs/known-limitations.md). -[Unreleased]: https://github.com/Sun-Tech-Software/WCS/compare/v0.1.0-preview.1...HEAD +[Unreleased]: https://github.com/Sun-Tech-Software/WCS/compare/v0.1.0...HEAD +[0.1.0]: https://github.com/Sun-Tech-Software/WCS/releases/tag/v0.1.0 [0.1.0-preview.1]: https://github.com/Sun-Tech-Software/WCS/releases/tag/v0.1.0-preview.1 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 93e6dfb..b05b9e1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -7,7 +7,7 @@ Everyone taking part follows the [Code of Conduct](CODE_OF_CONDUCT.md). ## How contributions are handled -- The repository is an **initial public preview**, maintained by Sun Tech Srl. +- The repository is maintained by Sun Tech Srl; its current version is `0.1.0`. - Issues and pull requests are welcome. They are reviewed, accepted and merged **at Sun Tech's discretion**: a pull request may be declined, changed before merging, or left open, and there is no guaranteed response time ([SUPPORT.md](SUPPORT.md)). diff --git a/Common/Log.Windows/packages.lock.json b/Common/Log.Windows/packages.lock.json index b5712a5..18b59a1 100644 --- a/Common/Log.Windows/packages.lock.json +++ b/Common/Log.Windows/packages.lock.json @@ -17,7 +17,7 @@ "log.interface": { "type": "Project", "dependencies": { - "Helper": "[0.1.0-preview.1, )" + "Helper": "[0.1.0, )" } } }, @@ -37,7 +37,7 @@ "log.interface": { "type": "Project", "dependencies": { - "Helper": "[0.1.0-preview.1, )" + "Helper": "[0.1.0, )" } } } diff --git a/Directory.Build.props b/Directory.Build.props index 95cb102..31ede30 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -8,7 +8,7 @@ the "version" field of GET /api/v1/status. --> - 0.1.0-preview.1 + 0.1.0 Sun Tech Srl Sun Tech Srl Copyright 2026 Sun Tech Srl diff --git a/README.md b/README.md index 157a3bc..58cdd54 100644 --- a/README.md +++ b/README.md @@ -6,9 +6,10 @@ > emergency stops or interlocks, and machine safety must not depend on it. Read > [SAFETY.md](SAFETY.md) before connecting it to any machine. > -> **Preview.** This is an initial public preview. Its first version, `0.1.0-preview.1`, is -> **source-only**: build it from this repository; no NuGet packages are published yet -> ([using the libraries](#using-the-libraries-from-your-code)). Read the +> **Version 0.1.0.** The first release after the public preview. It is **source-only**: build it +> from this repository; no NuGet packages are published yet +> ([using the libraries](#using-the-libraries-from-your-code)). Before 1.0 a minor version may +> change things in incompatible ways ([versioning](docs/versioning-and-compatibility.md)). Read the > [known limitations](docs/known-limitations.md) before planning a production installation. The warehouse management system (WMS) reasons about goods: codes, lots, orders, stock. The @@ -129,16 +130,16 @@ check that the working tree is still clean afterwards. ## Using the libraries from your code -The preview is distributed **as source only**. The libraries a WMS adapter or a client program +The WCS is distributed **as source only**. The libraries a WMS adapter or a client program uses (`Wcs.Wms.Contracts`, `Wcs.Api.Contracts`, `Wcs.Api.Client`, `Wcs.Common`, `Wcs.Connection.Interface`) are **not published on NuGet yet**; packages will come with a later release. Until then the supported way is a `ProjectReference` to a copy of this repository **at a release tag**, never at a moving branch: -- a clone checked out at a tag, next to your solution: `git clone --branch v0.1.0-preview.1 https://github.com/Sun-Tech-Software/WCS.git`; +- a clone checked out at a tag, next to your solution: `git clone --branch v0.1.0 https://github.com/Sun-Tech-Software/WCS.git`; - or a git submodule of your repository, pinned to a tag: `git submodule add https://github.com/Sun-Tech-Software/WCS.git external/WCS`, then - `git -C external/WCS checkout v0.1.0-preview.1` and commit the submodule. + `git -C external/WCS checkout v0.1.0` and commit the submodule. Then reference the projects you need, for example ``. Moving to @@ -167,7 +168,7 @@ to put this WCS under it, with real, runnable examples. | [Security and threat model](docs/integration/security-and-threat-model.md) | the expected network, keys and their rotation, TLS, logging and audit, threats | | [Backup, restore and disaster recovery](docs/integration/backup-restore-and-disaster-recovery.md) | backing up and restoring the data, recovering a host | | [Production readiness checklist](docs/integration/production-readiness-checklist.md) | from the test bench to production | -| [Known limitations](docs/known-limitations.md) | what the preview does not do yet | +| [Known limitations](docs/known-limitations.md) | what the WCS does not do yet | | [Supported platforms](docs/integration/supported-platforms.md) | what is tested where: Windows, Linux, x64, ARM64, browsers, .NET | | [Performance and sizing](docs/integration/performance-and-sizing.md) | what drives CPU, memory and disk, and how to measure your plant | | [Monitoring and alerting](docs/integration/monitoring-and-alerting.md) | health checks and scripts with exit codes for your monitoring system | diff --git a/SECURITY.md b/SECURITY.md index 6ca017a..dacd73d 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -2,7 +2,7 @@ ## Supported versions -The repository is an **initial public preview**; its first version is `0.1.0-preview.1` +The current version is `0.1.0`, the first release after the public preview ([versioning](docs/versioning-and-compatibility.md)). Security fixes are made on the default branch (`main`) and come out in the next version; earlier versions are not patched. Older commits, forks and copies modified by others are not supported. @@ -62,7 +62,7 @@ Out of scope: ([THIRD-PARTY-NOTICES.md](THIRD-PARTY-NOTICES.md)); - installations that ignore the documented requirements, for example a host exposed to the Internet, `Wcs:AllowInsecureRemoteHttp` on an untrusted network, or keys stored in tracked files; -- the documented limits of the preview, such as shared keys without per-operator identity and the +- the documented limits of the WCS, such as shared keys without per-operator identity and the absence of rate limiting ([known limitations](docs/known-limitations.md)): suggestions to improve them are welcome as ordinary issues. diff --git a/SUPPORT.md b/SUPPORT.md index cd5c235..72316d9 100644 --- a/SUPPORT.md +++ b/SUPPORT.md @@ -46,5 +46,6 @@ Nothing in this repository is a commitment to provide them, or to provide them o ## Supported versions -Only the **current preview** (the default branch, `main`) is supported, in the sense above. There is -no released version yet, and no long-term support for any commit. +Only the **latest release** (today `0.1.0`) and the default branch, `main`, are supported, in the +sense above: fixes come out in the next version, earlier versions are not patched, and there is no +long-term support for any commit. diff --git a/WCS/Wcs.Api.Client/src/packages.lock.json b/WCS/Wcs.Api.Client/src/packages.lock.json index 57213c7..e23aebe 100644 --- a/WCS/Wcs.Api.Client/src/packages.lock.json +++ b/WCS/Wcs.Api.Client/src/packages.lock.json @@ -119,7 +119,7 @@ "wcs.api.contracts": { "type": "Project", "dependencies": { - "Wcs.Common": "[0.1.0-preview.1, )" + "Wcs.Common": "[0.1.0, )" } }, "wcs.common": { diff --git a/WCS/Wcs.Api.Client/tests/Wcs.Api.Client.Test/packages.lock.json b/WCS/Wcs.Api.Client/tests/Wcs.Api.Client.Test/packages.lock.json index 5ea7267..b59ec62 100644 --- a/WCS/Wcs.Api.Client/tests/Wcs.Api.Client.Test/packages.lock.json +++ b/WCS/Wcs.Api.Client/tests/Wcs.Api.Client.Test/packages.lock.json @@ -816,20 +816,20 @@ "log.interface": { "type": "Project", "dependencies": { - "Helper": "[0.1.0-preview.1, )" + "Helper": "[0.1.0, )" } }, "wcs.api.client": { "type": "Project", "dependencies": { "Microsoft.AspNetCore.SignalR.Client": "[10.0.13, )", - "Wcs.Api.Contracts": "[0.1.0-preview.1, )" + "Wcs.Api.Contracts": "[0.1.0, )" } }, "wcs.api.contracts": { "type": "Project", "dependencies": { - "Wcs.Common": "[0.1.0-preview.1, )" + "Wcs.Common": "[0.1.0, )" } }, "wcs.common": { @@ -838,25 +838,25 @@ "wcs.connection.interface": { "type": "Project", "dependencies": { - "Wcs.Common": "[0.1.0-preview.1, )" + "Wcs.Common": "[0.1.0, )" } }, "wcs.connection.test": { "type": "Project", "dependencies": { - "Wcs.Connection.Interface": "[0.1.0-preview.1, )" + "Wcs.Connection.Interface": "[0.1.0, )" } }, "wcs.engine": { "type": "Project", "dependencies": { - "Helper": "[0.1.0-preview.1, )", - "Log.Interface": "[0.1.0-preview.1, )", + "Helper": "[0.1.0, )", + "Log.Interface": "[0.1.0, )", "Microsoft.EntityFrameworkCore.Sqlite": "[10.0.12, )", - "Wcs.Common": "[0.1.0-preview.1, )", - "Wcs.Connection.Interface": "[0.1.0-preview.1, )", - "Wcs.Connection.Test": "[0.1.0-preview.1, )", - "Wcs.Wms.Contracts": "[0.1.0-preview.1, )" + "Wcs.Common": "[0.1.0, )", + "Wcs.Connection.Interface": "[0.1.0, )", + "Wcs.Connection.Test": "[0.1.0, )", + "Wcs.Wms.Contracts": "[0.1.0, )" } }, "wcs.host": { @@ -865,10 +865,10 @@ "Microsoft.AspNetCore.App.Internal.Assets": "[10.0.12, )", "Microsoft.AspNetCore.OpenApi": "[10.0.12, )", "Microsoft.Extensions.Hosting.WindowsServices": "[10.0.12, )", - "Wcs.Api.Contracts": "[0.1.0-preview.1, )", - "Wcs.Engine": "[0.1.0-preview.1, )", - "Wcs.WebEditor": "[0.1.0-preview.1, )", - "Wcs.Wms.Client": "[0.1.0-preview.1, )" + "Wcs.Api.Contracts": "[0.1.0, )", + "Wcs.Engine": "[0.1.0, )", + "Wcs.WebEditor": "[0.1.0, )", + "Wcs.Wms.Client": "[0.1.0, )" } }, "wcs.host.test": { @@ -878,8 +878,8 @@ "Microsoft.AspNetCore.SignalR.Client": "[10.0.13, )", "Microsoft.CodeAnalysis.CSharp": "[5.0.0, )", "Microsoft.NET.Test.Sdk": "[18.10.0, )", - "Wcs.Host": "[0.1.0-preview.1, )", - "Wcs.Wms.Contracts.Test": "[0.1.0-preview.1, )", + "Wcs.Host": "[0.1.0, )", + "Wcs.Wms.Contracts.Test": "[0.1.0, )", "bunit": "[2.10.3, )", "xunit": "[2.9.3, )" } @@ -888,14 +888,14 @@ "type": "Project", "dependencies": { "Microsoft.FluentUI.AspNetCore.Components": "[4.14.4, )", - "Wcs.Api.Client": "[0.1.0-preview.1, )", - "Wcs.Api.Contracts": "[0.1.0-preview.1, )" + "Wcs.Api.Client": "[0.1.0, )", + "Wcs.Api.Contracts": "[0.1.0, )" } }, "wcs.wms.client": { "type": "Project", "dependencies": { - "Wcs.Wms.Contracts": "[0.1.0-preview.1, )" + "Wcs.Wms.Contracts": "[0.1.0, )" } }, "wcs.wms.contracts": { @@ -905,7 +905,7 @@ "type": "Project", "dependencies": { "Microsoft.NET.Test.Sdk": "[18.10.0, )", - "Wcs.Wms.Contracts": "[0.1.0-preview.1, )", + "Wcs.Wms.Contracts": "[0.1.0, )", "xunit": "[2.9.3, )" } } diff --git a/WCS/Wcs.Connection.Test/src/packages.lock.json b/WCS/Wcs.Connection.Test/src/packages.lock.json index f28eb38..a661965 100644 --- a/WCS/Wcs.Connection.Test/src/packages.lock.json +++ b/WCS/Wcs.Connection.Test/src/packages.lock.json @@ -8,7 +8,7 @@ "wcs.connection.interface": { "type": "Project", "dependencies": { - "Wcs.Common": "[0.1.0-preview.1, )" + "Wcs.Common": "[0.1.0, )" } } } diff --git a/WCS/Wcs.Engine/src/packages.lock.json b/WCS/Wcs.Engine/src/packages.lock.json index 8bfa6b0..0ae7095 100644 --- a/WCS/Wcs.Engine/src/packages.lock.json +++ b/WCS/Wcs.Engine/src/packages.lock.json @@ -356,7 +356,7 @@ "log.interface": { "type": "Project", "dependencies": { - "Helper": "[0.1.0-preview.1, )" + "Helper": "[0.1.0, )" } }, "wcs.common": { @@ -365,13 +365,13 @@ "wcs.connection.interface": { "type": "Project", "dependencies": { - "Wcs.Common": "[0.1.0-preview.1, )" + "Wcs.Common": "[0.1.0, )" } }, "wcs.connection.test": { "type": "Project", "dependencies": { - "Wcs.Connection.Interface": "[0.1.0-preview.1, )" + "Wcs.Connection.Interface": "[0.1.0, )" } }, "wcs.wms.contracts": { diff --git a/WCS/Wcs.Engine/tests/Wcs.Engine.Test/packages.lock.json b/WCS/Wcs.Engine/tests/Wcs.Engine.Test/packages.lock.json index 926c245..4241e12 100644 --- a/WCS/Wcs.Engine/tests/Wcs.Engine.Test/packages.lock.json +++ b/WCS/Wcs.Engine/tests/Wcs.Engine.Test/packages.lock.json @@ -275,7 +275,7 @@ "log.interface": { "type": "Project", "dependencies": { - "Helper": "[0.1.0-preview.1, )" + "Helper": "[0.1.0, )" } }, "wcs.common": { @@ -284,25 +284,25 @@ "wcs.connection.interface": { "type": "Project", "dependencies": { - "Wcs.Common": "[0.1.0-preview.1, )" + "Wcs.Common": "[0.1.0, )" } }, "wcs.connection.test": { "type": "Project", "dependencies": { - "Wcs.Connection.Interface": "[0.1.0-preview.1, )" + "Wcs.Connection.Interface": "[0.1.0, )" } }, "wcs.engine": { "type": "Project", "dependencies": { - "Helper": "[0.1.0-preview.1, )", - "Log.Interface": "[0.1.0-preview.1, )", + "Helper": "[0.1.0, )", + "Log.Interface": "[0.1.0, )", "Microsoft.EntityFrameworkCore.Sqlite": "[10.0.12, )", - "Wcs.Common": "[0.1.0-preview.1, )", - "Wcs.Connection.Interface": "[0.1.0-preview.1, )", - "Wcs.Connection.Test": "[0.1.0-preview.1, )", - "Wcs.Wms.Contracts": "[0.1.0-preview.1, )" + "Wcs.Common": "[0.1.0, )", + "Wcs.Connection.Interface": "[0.1.0, )", + "Wcs.Connection.Test": "[0.1.0, )", + "Wcs.Wms.Contracts": "[0.1.0, )" } }, "wcs.wms.contracts": { @@ -312,7 +312,7 @@ "type": "Project", "dependencies": { "Microsoft.NET.Test.Sdk": "[18.10.0, )", - "Wcs.Wms.Contracts": "[0.1.0-preview.1, )", + "Wcs.Wms.Contracts": "[0.1.0, )", "xunit": "[2.9.3, )" } } diff --git a/WCS/Wcs.Host/src/packages.lock.json b/WCS/Wcs.Host/src/packages.lock.json index 2d05e28..e7a7383 100644 --- a/WCS/Wcs.Host/src/packages.lock.json +++ b/WCS/Wcs.Host/src/packages.lock.json @@ -155,20 +155,20 @@ "log.interface": { "type": "Project", "dependencies": { - "Helper": "[0.1.0-preview.1, )" + "Helper": "[0.1.0, )" } }, "wcs.api.client": { "type": "Project", "dependencies": { "Microsoft.AspNetCore.SignalR.Client": "[10.0.13, )", - "Wcs.Api.Contracts": "[0.1.0-preview.1, )" + "Wcs.Api.Contracts": "[0.1.0, )" } }, "wcs.api.contracts": { "type": "Project", "dependencies": { - "Wcs.Common": "[0.1.0-preview.1, )" + "Wcs.Common": "[0.1.0, )" } }, "wcs.common": { @@ -177,39 +177,39 @@ "wcs.connection.interface": { "type": "Project", "dependencies": { - "Wcs.Common": "[0.1.0-preview.1, )" + "Wcs.Common": "[0.1.0, )" } }, "wcs.connection.test": { "type": "Project", "dependencies": { - "Wcs.Connection.Interface": "[0.1.0-preview.1, )" + "Wcs.Connection.Interface": "[0.1.0, )" } }, "wcs.engine": { "type": "Project", "dependencies": { - "Helper": "[0.1.0-preview.1, )", - "Log.Interface": "[0.1.0-preview.1, )", + "Helper": "[0.1.0, )", + "Log.Interface": "[0.1.0, )", "Microsoft.EntityFrameworkCore.Sqlite": "[10.0.12, )", - "Wcs.Common": "[0.1.0-preview.1, )", - "Wcs.Connection.Interface": "[0.1.0-preview.1, )", - "Wcs.Connection.Test": "[0.1.0-preview.1, )", - "Wcs.Wms.Contracts": "[0.1.0-preview.1, )" + "Wcs.Common": "[0.1.0, )", + "Wcs.Connection.Interface": "[0.1.0, )", + "Wcs.Connection.Test": "[0.1.0, )", + "Wcs.Wms.Contracts": "[0.1.0, )" } }, "wcs.webeditor": { "type": "Project", "dependencies": { "Microsoft.FluentUI.AspNetCore.Components": "[4.14.4, )", - "Wcs.Api.Client": "[0.1.0-preview.1, )", - "Wcs.Api.Contracts": "[0.1.0-preview.1, )" + "Wcs.Api.Client": "[0.1.0, )", + "Wcs.Api.Contracts": "[0.1.0, )" } }, "wcs.wms.client": { "type": "Project", "dependencies": { - "Wcs.Wms.Contracts": "[0.1.0-preview.1, )" + "Wcs.Wms.Contracts": "[0.1.0, )" } }, "wcs.wms.contracts": { diff --git a/WCS/Wcs.Host/tests/Wcs.Host.Test/packages.lock.json b/WCS/Wcs.Host/tests/Wcs.Host.Test/packages.lock.json index 602bdba..06e19a6 100644 --- a/WCS/Wcs.Host/tests/Wcs.Host.Test/packages.lock.json +++ b/WCS/Wcs.Host/tests/Wcs.Host.Test/packages.lock.json @@ -818,20 +818,20 @@ "log.interface": { "type": "Project", "dependencies": { - "Helper": "[0.1.0-preview.1, )" + "Helper": "[0.1.0, )" } }, "wcs.api.client": { "type": "Project", "dependencies": { "Microsoft.AspNetCore.SignalR.Client": "[10.0.13, )", - "Wcs.Api.Contracts": "[0.1.0-preview.1, )" + "Wcs.Api.Contracts": "[0.1.0, )" } }, "wcs.api.contracts": { "type": "Project", "dependencies": { - "Wcs.Common": "[0.1.0-preview.1, )" + "Wcs.Common": "[0.1.0, )" } }, "wcs.common": { @@ -840,25 +840,25 @@ "wcs.connection.interface": { "type": "Project", "dependencies": { - "Wcs.Common": "[0.1.0-preview.1, )" + "Wcs.Common": "[0.1.0, )" } }, "wcs.connection.test": { "type": "Project", "dependencies": { - "Wcs.Connection.Interface": "[0.1.0-preview.1, )" + "Wcs.Connection.Interface": "[0.1.0, )" } }, "wcs.engine": { "type": "Project", "dependencies": { - "Helper": "[0.1.0-preview.1, )", - "Log.Interface": "[0.1.0-preview.1, )", + "Helper": "[0.1.0, )", + "Log.Interface": "[0.1.0, )", "Microsoft.EntityFrameworkCore.Sqlite": "[10.0.12, )", - "Wcs.Common": "[0.1.0-preview.1, )", - "Wcs.Connection.Interface": "[0.1.0-preview.1, )", - "Wcs.Connection.Test": "[0.1.0-preview.1, )", - "Wcs.Wms.Contracts": "[0.1.0-preview.1, )" + "Wcs.Common": "[0.1.0, )", + "Wcs.Connection.Interface": "[0.1.0, )", + "Wcs.Connection.Test": "[0.1.0, )", + "Wcs.Wms.Contracts": "[0.1.0, )" } }, "wcs.host": { @@ -867,24 +867,24 @@ "Microsoft.AspNetCore.App.Internal.Assets": "[10.0.12, )", "Microsoft.AspNetCore.OpenApi": "[10.0.12, )", "Microsoft.Extensions.Hosting.WindowsServices": "[10.0.12, )", - "Wcs.Api.Contracts": "[0.1.0-preview.1, )", - "Wcs.Engine": "[0.1.0-preview.1, )", - "Wcs.WebEditor": "[0.1.0-preview.1, )", - "Wcs.Wms.Client": "[0.1.0-preview.1, )" + "Wcs.Api.Contracts": "[0.1.0, )", + "Wcs.Engine": "[0.1.0, )", + "Wcs.WebEditor": "[0.1.0, )", + "Wcs.Wms.Client": "[0.1.0, )" } }, "wcs.webeditor": { "type": "Project", "dependencies": { "Microsoft.FluentUI.AspNetCore.Components": "[4.14.4, )", - "Wcs.Api.Client": "[0.1.0-preview.1, )", - "Wcs.Api.Contracts": "[0.1.0-preview.1, )" + "Wcs.Api.Client": "[0.1.0, )", + "Wcs.Api.Contracts": "[0.1.0, )" } }, "wcs.wms.client": { "type": "Project", "dependencies": { - "Wcs.Wms.Contracts": "[0.1.0-preview.1, )" + "Wcs.Wms.Contracts": "[0.1.0, )" } }, "wcs.wms.contracts": { @@ -894,7 +894,7 @@ "type": "Project", "dependencies": { "Microsoft.NET.Test.Sdk": "[18.10.0, )", - "Wcs.Wms.Contracts": "[0.1.0-preview.1, )", + "Wcs.Wms.Contracts": "[0.1.0, )", "xunit": "[2.9.3, )" } } diff --git a/WCS/Wcs.Viewer/src/packages.lock.json b/WCS/Wcs.Viewer/src/packages.lock.json index e9c232a..0603dd1 100644 --- a/WCS/Wcs.Viewer/src/packages.lock.json +++ b/WCS/Wcs.Viewer/src/packages.lock.json @@ -129,13 +129,13 @@ "log.interface": { "type": "Project", "dependencies": { - "Helper": "[0.1.0-preview.1, )" + "Helper": "[0.1.0, )" } }, "log.windows": { "type": "Project", "dependencies": { - "Log.Interface": "[0.1.0-preview.1, )", + "Log.Interface": "[0.1.0, )", "System.Diagnostics.EventLog": "[10.0.13, )" } }, @@ -143,13 +143,13 @@ "type": "Project", "dependencies": { "Microsoft.AspNetCore.SignalR.Client": "[10.0.13, )", - "Wcs.Api.Contracts": "[0.1.0-preview.1, )" + "Wcs.Api.Contracts": "[0.1.0, )" } }, "wcs.api.contracts": { "type": "Project", "dependencies": { - "Wcs.Common": "[0.1.0-preview.1, )" + "Wcs.Common": "[0.1.0, )" } }, "wcs.common": { diff --git a/WCS/Wcs.WebEditor/src/packages.lock.json b/WCS/Wcs.WebEditor/src/packages.lock.json index f31df9a..c5994af 100644 --- a/WCS/Wcs.WebEditor/src/packages.lock.json +++ b/WCS/Wcs.WebEditor/src/packages.lock.json @@ -31,13 +31,13 @@ "type": "Project", "dependencies": { "Microsoft.AspNetCore.SignalR.Client": "[10.0.13, )", - "Wcs.Api.Contracts": "[0.1.0-preview.1, )" + "Wcs.Api.Contracts": "[0.1.0, )" } }, "wcs.api.contracts": { "type": "Project", "dependencies": { - "Wcs.Common": "[0.1.0-preview.1, )" + "Wcs.Common": "[0.1.0, )" } }, "wcs.common": { diff --git a/WCS/Wcs.WebEditor/tests/Wcs.WebEditor.Browser.Test/packages.lock.json b/WCS/Wcs.WebEditor/tests/Wcs.WebEditor.Browser.Test/packages.lock.json index eac58c2..dd83350 100644 --- a/WCS/Wcs.WebEditor/tests/Wcs.WebEditor.Browser.Test/packages.lock.json +++ b/WCS/Wcs.WebEditor/tests/Wcs.WebEditor.Browser.Test/packages.lock.json @@ -224,13 +224,13 @@ "type": "Project", "dependencies": { "Microsoft.AspNetCore.SignalR.Client": "[10.0.13, )", - "Wcs.Api.Contracts": "[0.1.0-preview.1, )" + "Wcs.Api.Contracts": "[0.1.0, )" } }, "wcs.api.contracts": { "type": "Project", "dependencies": { - "Wcs.Common": "[0.1.0-preview.1, )" + "Wcs.Common": "[0.1.0, )" } }, "wcs.common": { diff --git a/WCS/Wcs.WebEditor/tests/Wcs.WebEditor.Test/packages.lock.json b/WCS/Wcs.WebEditor/tests/Wcs.WebEditor.Test/packages.lock.json index a4af65f..bd2bb6e 100644 --- a/WCS/Wcs.WebEditor/tests/Wcs.WebEditor.Test/packages.lock.json +++ b/WCS/Wcs.WebEditor/tests/Wcs.WebEditor.Test/packages.lock.json @@ -513,13 +513,13 @@ "type": "Project", "dependencies": { "Microsoft.AspNetCore.SignalR.Client": "[10.0.13, )", - "Wcs.Api.Contracts": "[0.1.0-preview.1, )" + "Wcs.Api.Contracts": "[0.1.0, )" } }, "wcs.api.contracts": { "type": "Project", "dependencies": { - "Wcs.Common": "[0.1.0-preview.1, )" + "Wcs.Common": "[0.1.0, )" } }, "wcs.common": { @@ -529,8 +529,8 @@ "type": "Project", "dependencies": { "Microsoft.FluentUI.AspNetCore.Components": "[4.14.4, )", - "Wcs.Api.Client": "[0.1.0-preview.1, )", - "Wcs.Api.Contracts": "[0.1.0-preview.1, )" + "Wcs.Api.Client": "[0.1.0, )", + "Wcs.Api.Contracts": "[0.1.0, )" } } } diff --git a/WCS/Wcs.Wms.Client/tests/Wcs.Wms.Client.Test/packages.lock.json b/WCS/Wcs.Wms.Client/tests/Wcs.Wms.Client.Test/packages.lock.json index 8bd01fd..0f59f4a 100644 --- a/WCS/Wcs.Wms.Client/tests/Wcs.Wms.Client.Test/packages.lock.json +++ b/WCS/Wcs.Wms.Client/tests/Wcs.Wms.Client.Test/packages.lock.json @@ -90,7 +90,7 @@ "wcs.wms.client": { "type": "Project", "dependencies": { - "Wcs.Wms.Contracts": "[0.1.0-preview.1, )" + "Wcs.Wms.Contracts": "[0.1.0, )" } }, "wcs.wms.contracts": { diff --git a/WCS/tools/Wcs.DbTool/packages.lock.json b/WCS/tools/Wcs.DbTool/packages.lock.json index 9ed5f4c..4d80fa9 100644 --- a/WCS/tools/Wcs.DbTool/packages.lock.json +++ b/WCS/tools/Wcs.DbTool/packages.lock.json @@ -200,7 +200,7 @@ "log.interface": { "type": "Project", "dependencies": { - "Helper": "[0.1.0-preview.1, )" + "Helper": "[0.1.0, )" } }, "wcs.common": { @@ -209,25 +209,25 @@ "wcs.connection.interface": { "type": "Project", "dependencies": { - "Wcs.Common": "[0.1.0-preview.1, )" + "Wcs.Common": "[0.1.0, )" } }, "wcs.connection.test": { "type": "Project", "dependencies": { - "Wcs.Connection.Interface": "[0.1.0-preview.1, )" + "Wcs.Connection.Interface": "[0.1.0, )" } }, "wcs.engine": { "type": "Project", "dependencies": { - "Helper": "[0.1.0-preview.1, )", - "Log.Interface": "[0.1.0-preview.1, )", + "Helper": "[0.1.0, )", + "Log.Interface": "[0.1.0, )", "Microsoft.EntityFrameworkCore.Sqlite": "[10.0.12, )", - "Wcs.Common": "[0.1.0-preview.1, )", - "Wcs.Connection.Interface": "[0.1.0-preview.1, )", - "Wcs.Connection.Test": "[0.1.0-preview.1, )", - "Wcs.Wms.Contracts": "[0.1.0-preview.1, )" + "Wcs.Common": "[0.1.0, )", + "Wcs.Connection.Interface": "[0.1.0, )", + "Wcs.Connection.Test": "[0.1.0, )", + "Wcs.Wms.Contracts": "[0.1.0, )" } }, "wcs.wms.contracts": { diff --git a/WCS/tools/Wcs.DbTool/tests/Wcs.DbTool.Test/packages.lock.json b/WCS/tools/Wcs.DbTool/tests/Wcs.DbTool.Test/packages.lock.json index e084a74..af5c271 100644 --- a/WCS/tools/Wcs.DbTool/tests/Wcs.DbTool.Test/packages.lock.json +++ b/WCS/tools/Wcs.DbTool/tests/Wcs.DbTool.Test/packages.lock.json @@ -284,7 +284,7 @@ "log.interface": { "type": "Project", "dependencies": { - "Helper": "[0.1.0-preview.1, )" + "Helper": "[0.1.0, )" } }, "wcs.common": { @@ -293,32 +293,32 @@ "wcs.connection.interface": { "type": "Project", "dependencies": { - "Wcs.Common": "[0.1.0-preview.1, )" + "Wcs.Common": "[0.1.0, )" } }, "wcs.connection.test": { "type": "Project", "dependencies": { - "Wcs.Connection.Interface": "[0.1.0-preview.1, )" + "Wcs.Connection.Interface": "[0.1.0, )" } }, "wcs.dbtool": { "type": "Project", "dependencies": { "Microsoft.Data.Sqlite": "[10.0.12, )", - "Wcs.Engine": "[0.1.0-preview.1, )" + "Wcs.Engine": "[0.1.0, )" } }, "wcs.engine": { "type": "Project", "dependencies": { - "Helper": "[0.1.0-preview.1, )", - "Log.Interface": "[0.1.0-preview.1, )", + "Helper": "[0.1.0, )", + "Log.Interface": "[0.1.0, )", "Microsoft.EntityFrameworkCore.Sqlite": "[10.0.12, )", - "Wcs.Common": "[0.1.0-preview.1, )", - "Wcs.Connection.Interface": "[0.1.0-preview.1, )", - "Wcs.Connection.Test": "[0.1.0-preview.1, )", - "Wcs.Wms.Contracts": "[0.1.0-preview.1, )" + "Wcs.Common": "[0.1.0, )", + "Wcs.Connection.Interface": "[0.1.0, )", + "Wcs.Connection.Test": "[0.1.0, )", + "Wcs.Wms.Contracts": "[0.1.0, )" } }, "wcs.wms.contracts": { diff --git a/docs/README.md b/docs/README.md index 4186a74..2299adf 100644 --- a/docs/README.md +++ b/docs/README.md @@ -7,8 +7,9 @@ cranes, bays, racks) and moves load units through it; your WMS keeps deciding wh Everything here was checked against the code of this repository, and the examples (commands, HTTP requests and answers, configuration, C#) were run. -This is an **initial public preview**: read [Known limitations](known-limitations.md) before -planning a production installation. Its first version, `0.1.0-preview.1`, is **source-only**: no +This is version **0.1.0**, the first release after the public preview: read +[Known limitations](known-limitations.md) before planning a production installation. It is +**source-only**: no NuGet packages yet; your code references the libraries from a clone or a submodule at a release tag ([README](../README.md#using-the-libraries-from-your-code)). **The WCS is not a safety system**: read [SAFETY.md](../SAFETY.md) before connecting it to machines. diff --git a/docs/integration/host-api.md b/docs/integration/host-api.md index 9731d93..02a26f3 100644 --- a/docs/integration/host-api.md +++ b/docs/integration/host-api.md @@ -382,9 +382,9 @@ then add the reference to `WcsClientDemo.csproj` (adjust the relative path): Here `..\WCS` is the clone, next to the `WcsClientDemo` folder. -**The preview is source-only: `Wcs.Api.Client` is not on NuGet yet**, and packages will come with a +**The WCS is source-only: `Wcs.Api.Client` is not on NuGet yet**, and packages will come with a later release. Clone the repository **at the release tag** of the host you talk to -(`git clone --branch v0.1.0-preview.1 https://github.com/Sun-Tech-Software/WCS.git WCS`), or add it to +(`git clone --branch v0.1.0 https://github.com/Sun-Tech-Software/WCS.git WCS`), or add it to your repository as a git submodule pinned to that tag, and reference the project from there ([README](../../README.md#using-the-libraries-from-your-code)). To upgrade, move the clone or the submodule to the new tag and read [what may change](../versioning-and-compatibility.md#host-api-and-net-client). diff --git a/docs/integration/supported-platforms.md b/docs/integration/supported-platforms.md index 70db0fe..a66cc3a 100644 --- a/docs/integration/supported-platforms.md +++ b/docs/integration/supported-platforms.md @@ -1,7 +1,7 @@ # Supported platforms Which operating systems, processor architectures, browsers and .NET SDK each part of the WCS has been -run on for `0.1.0-preview.1`, and with what evidence. This page states what was **verified**; it is +run on for `0.1.0`, and with what evidence. This page states what was **verified**; it is not a promise of support. **Sun Tech has not yet published an official support matrix**: until it does, nothing here is "officially supported", and the open points are listed in the [publication checklist](../publication-checklist.md). diff --git a/docs/integration/writing-a-wms-adapter.md b/docs/integration/writing-a-wms-adapter.md index 5366c3c..44b3408 100644 --- a/docs/integration/writing-a-wms-adapter.md +++ b/docs/integration/writing-a-wms-adapter.md @@ -30,10 +30,10 @@ dependencies) for the route constants and the request and answer records, as the ``` -**The preview is source-only: `Wcs.Wms.Contracts` is not on NuGet yet**, and packages will come with a +**The WCS is source-only: `Wcs.Wms.Contracts` is not on NuGet yet**, and packages will come with a later release. Reference the project from a copy of this repository **at a release tag** (the version your WCS host runs), never at a moving branch: a clone checked out at the tag -(`git clone --branch v0.1.0-preview.1 https://github.com/Sun-Tech-Software/WCS.git`) or a git +(`git clone --branch v0.1.0 https://github.com/Sun-Tech-Software/WCS.git`) or a git submodule of your repository pinned to the tag, with the `ProjectReference` path adjusted to where it lies ([README](../../README.md#using-the-libraries-from-your-code)). Moving to a new version is moving the clone or the submodule to the new tag, after reading what changed in the diff --git a/docs/known-limitations.md b/docs/known-limitations.md index dd07360..f845112 100644 --- a/docs/known-limitations.md +++ b/docs/known-limitations.md @@ -1,8 +1,8 @@ # Known limitations -This repository is an **initial public preview**. The engine behind it has run real plants, but this -public form of it (the host, the web editor, the contracts, the sample WMS and the guides) is new: its -first version is `0.1.0-preview.1`, and before 1.0 a minor version may change it in incompatible ways +This repository is at version **0.1.0**, the first release after the public preview. The engine behind +it has run real plants, but this public form of it (the host, the web editor, the contracts, the sample +WMS and the guides) is new, and before 1.0 a minor version may change it in incompatible ways ([versioning and compatibility](versioning-and-compatibility.md)). This page lists what the WCS does not do, or does only partly, today. Each point was checked against the code of this repository. @@ -164,7 +164,7 @@ Program against status codes, not texts. ## Distribution -The preview is distributed as source. No NuGet package of the contracts and clients +The WCS is distributed as source. No NuGet package of the contracts and clients (`Wcs.Wms.Contracts`, `Wcs.Api.Contracts`, `Wcs.Api.Client`, `Wcs.Common`, `Wcs.Connection.Interface`) is published yet; they will come with a later release. Until then a WMS adapter, a client program or a driver references the projects from a clone of this repository, or a git submodule, checked out at a diff --git a/docs/publication-checklist.md b/docs/publication-checklist.md index b2f0fb0..3af206a 100644 --- a/docs/publication-checklist.md +++ b/docs/publication-checklist.md @@ -1,7 +1,7 @@ # Publication checklist The one list of what must be true, decided or tested before the WCS is published as open source and -`0.1.0-preview.1` is released, and who can do it. It complements the [release process](release-process.md) +its first version is released, and who can do it. It complements the [release process](release-process.md) (how any version is tagged and built) with what only the **first** publication needs. Each item belongs to one group: @@ -35,10 +35,10 @@ to it. Nothing here is done by writing it in this file. examples in line with the code ([contracts](contracts/README.md)). - [ ] **SBOM**: `sbom/wcs.cdx.json` matches the restored packages (`sbom/Test-WcsSbom.ps1`). - [ ] **Vulnerable packages**: none, direct or transitive (CI job `vulnerable-packages`). -- [ ] **Tag and version**: the tag is `v0.1.0-preview.1` and matches `Version` in +- [ ] **Tag and version**: the tag is `vX.Y.Z` and matches `Version` in `Directory.Build.props`; the `Release` workflow refuses anything else. - [ ] **Changelog**: [CHANGELOG.md](../CHANGELOG.md) has the dated - `## [0.1.0-preview.1] - 2026-10-15` section; the `Release` workflow refuses an undated or empty + `## [X.Y.Z] - YYYY-MM-DD` section; the `Release` workflow refuses an undated or empty section. - [ ] **Release assets and checksums**: the `Release` workflow builds the three zips, the SBOM and `SHA256SUMS.txt`, starts the applications from the extracted archives, and attaches them to a draft release. @@ -142,10 +142,10 @@ The loopback driver proves that the WCS's logic runs; it proves nothing about ma - [ ] **Publication date** and who announces it. - [ ] **What Sun Tech offers around the open-source WCS**: support terms, the proprietary driver's licence and price, integration services, and whether any of it is mentioned in the README. -- [ ] **Support commitment for the preview**: whether issues get a response time, and how long the - preview line is maintained. +- [ ] **Support commitment**: whether issues get a response time, and how long each version line is + maintained. - [ ] **NuGet packages**: whether and when the contracts and clients are published as packages, under - which owner (today the preview is source-only). + which owner (today the WCS is source-only). - [ ] **Signed binaries**: whether releases are code-signed (today they are not, and the checksums do not prove who built them). - [ ] **Trademarks**: use of the names "Sun Tech" and "WCS" by forks, and any trademark notice. diff --git a/docs/release-process.md b/docs/release-process.md index e294984..399b69d 100644 --- a/docs/release-process.md +++ b/docs/release-process.md @@ -36,7 +36,7 @@ assemblies (`dotnet Wcs.Host.dll`). Framework-dependent because runtime security WCS through the runtime's own updates, without a new WCS release for each of them, and because the zips stay small. -**No NuGet packages are published.** The preview is distributed as source: the libraries are +**No NuGet packages are published.** The WCS is distributed as source: the libraries are referenced from a clone or a submodule at the release tag ([README](../README.md#using-the-libraries-from-your-code)). CI does run `dotnet pack` on every change, to keep the projects packable for when packages are published. @@ -72,8 +72,8 @@ On a branch, through a pull request to `main` like any other change: From an up-to-date `main`, on the merged commit: ```powershell -git tag -a v0.1.0-preview.1 -m "WCS 0.1.0-preview.1" -git push origin v0.1.0-preview.1 +git tag -a v0.1.0 -m "WCS 0.1.0" +git push origin v0.1.0 ``` Pushing the tag starts the `Release` workflow. It stops, and creates nothing, when: diff --git a/docs/versioning-and-compatibility.md b/docs/versioning-and-compatibility.md index 82e4e1f..4bace98 100644 --- a/docs/versioning-and-compatibility.md +++ b/docs/versioning-and-compatibility.md @@ -16,10 +16,11 @@ The WCS follows [Semantic Versioning 2.0.0](https://semver.org/spec/v2.0.0.html) patch versions of the same major). - **Written in one place**: the `Version` property of `Directory.Build.props` at the root of the repository. Every project takes it from there; a project file never sets its own. -- **Where it shows**: the release tag (`v0.1.0-preview.1`), the release and its files, the package +- **Where it shows**: the release tag (`v0.1.0`), the release and its files, the package version when the projects are packed, and the assembly version `MAJOR.MINOR.PATCH.0`, which the host - reports in the `version` field of `GET /api/v1/status` (`0.1.0.0` for `0.1.0-preview.1`). -- **The first version is `0.1.0-preview.1`**, a source-only preview: there are no NuGet packages, and + reports in the `version` field of `GET /api/v1/status` (`0.1.0.0` for `0.1.0`, as for its previews). +- **The first public version was a preview of `0.1.0`**; `0.1.0` is the first release without the + preview suffix. It is source-only: there are no NuGet packages, and the libraries are referenced from a clone or a submodule at a release tag ([README](../README.md#using-the-libraries-from-your-code)). diff --git a/samples/Wcs.SampleWms.Test/packages.lock.json b/samples/Wcs.SampleWms.Test/packages.lock.json index b33d5ff..58f7c5f 100644 --- a/samples/Wcs.SampleWms.Test/packages.lock.json +++ b/samples/Wcs.SampleWms.Test/packages.lock.json @@ -370,13 +370,13 @@ "type": "Project", "dependencies": { "Microsoft.AspNetCore.SignalR.Client": "[10.0.13, )", - "Wcs.Api.Contracts": "[0.1.0-preview.1, )" + "Wcs.Api.Contracts": "[0.1.0, )" } }, "wcs.api.contracts": { "type": "Project", "dependencies": { - "Wcs.Common": "[0.1.0-preview.1, )" + "Wcs.Common": "[0.1.0, )" } }, "wcs.common": { @@ -385,21 +385,21 @@ "wcs.samplewms": { "type": "Project", "dependencies": { - "Wcs.Wms.Contracts": "[0.1.0-preview.1, )" + "Wcs.Wms.Contracts": "[0.1.0, )" } }, "wcs.webeditor": { "type": "Project", "dependencies": { "Microsoft.FluentUI.AspNetCore.Components": "[4.14.4, )", - "Wcs.Api.Client": "[0.1.0-preview.1, )", - "Wcs.Api.Contracts": "[0.1.0-preview.1, )" + "Wcs.Api.Client": "[0.1.0, )", + "Wcs.Api.Contracts": "[0.1.0, )" } }, "wcs.wms.client": { "type": "Project", "dependencies": { - "Wcs.Wms.Contracts": "[0.1.0-preview.1, )" + "Wcs.Wms.Contracts": "[0.1.0, )" } }, "wcs.wms.contracts": { diff --git a/sbom/wcs.cdx.json b/sbom/wcs.cdx.json index f20f2cc..f1f1821 100644 --- a/sbom/wcs.cdx.json +++ b/sbom/wcs.cdx.json @@ -1,10 +1,10 @@ { "bomFormat": "CycloneDX", "specVersion": "1.5", - "serialNumber": "urn:uuid:06528f79-016d-40cc-8c81-d1fa28269fe8", + "serialNumber": "urn:uuid:bf96b938-5909-401e-bc18-48ebe6bd8989", "version": 1, "metadata": { - "timestamp": "2026-10-16T10:51:24Z", + "timestamp": "2026-10-16T11:12:44Z", "tools": { "components": [ { @@ -18,7 +18,7 @@ "type": "application", "bom-ref": "sun-tech-wcs", "name": "Sun Tech WCS", - "version": "0.1.0-preview.1", + "version": "0.1.0", "supplier": { "name": "Sun Tech Srl", "url": [ diff --git a/tools/Test-PublicRelease.ps1 b/tools/Test-PublicRelease.ps1 index c0cff1c..6cda82d 100644 --- a/tools/Test-PublicRelease.ps1 +++ b/tools/Test-PublicRelease.ps1 @@ -50,7 +50,7 @@ pwsh -File tools/Test-PublicRelease.ps1 .EXAMPLE - pwsh -File tools/Test-PublicRelease.ps1 -ReleaseTag v0.1.0-preview.1 -IncludeBrowserTests -IncludeReleaseDryRun + pwsh -File tools/Test-PublicRelease.ps1 -ReleaseTag v0.1.0 -IncludeBrowserTests -IncludeReleaseDryRun .EXAMPLE pwsh -File tools/Test-PublicRelease.ps1 -SelfTest diff --git a/tools/Wcs.ContractCheck/src/packages.lock.json b/tools/Wcs.ContractCheck/src/packages.lock.json index a374eb5..48d6068 100644 --- a/tools/Wcs.ContractCheck/src/packages.lock.json +++ b/tools/Wcs.ContractCheck/src/packages.lock.json @@ -624,20 +624,20 @@ "log.interface": { "type": "Project", "dependencies": { - "Helper": "[0.1.0-preview.1, )" + "Helper": "[0.1.0, )" } }, "wcs.api.client": { "type": "Project", "dependencies": { "Microsoft.AspNetCore.SignalR.Client": "[10.0.13, )", - "Wcs.Api.Contracts": "[0.1.0-preview.1, )" + "Wcs.Api.Contracts": "[0.1.0, )" } }, "wcs.api.contracts": { "type": "Project", "dependencies": { - "Wcs.Common": "[0.1.0-preview.1, )" + "Wcs.Common": "[0.1.0, )" } }, "wcs.common": { @@ -646,25 +646,25 @@ "wcs.connection.interface": { "type": "Project", "dependencies": { - "Wcs.Common": "[0.1.0-preview.1, )" + "Wcs.Common": "[0.1.0, )" } }, "wcs.connection.test": { "type": "Project", "dependencies": { - "Wcs.Connection.Interface": "[0.1.0-preview.1, )" + "Wcs.Connection.Interface": "[0.1.0, )" } }, "wcs.engine": { "type": "Project", "dependencies": { - "Helper": "[0.1.0-preview.1, )", - "Log.Interface": "[0.1.0-preview.1, )", + "Helper": "[0.1.0, )", + "Log.Interface": "[0.1.0, )", "Microsoft.EntityFrameworkCore.Sqlite": "[10.0.12, )", - "Wcs.Common": "[0.1.0-preview.1, )", - "Wcs.Connection.Interface": "[0.1.0-preview.1, )", - "Wcs.Connection.Test": "[0.1.0-preview.1, )", - "Wcs.Wms.Contracts": "[0.1.0-preview.1, )" + "Wcs.Common": "[0.1.0, )", + "Wcs.Connection.Interface": "[0.1.0, )", + "Wcs.Connection.Test": "[0.1.0, )", + "Wcs.Wms.Contracts": "[0.1.0, )" } }, "wcs.host": { @@ -673,24 +673,24 @@ "Microsoft.AspNetCore.App.Internal.Assets": "[10.0.12, )", "Microsoft.AspNetCore.OpenApi": "[10.0.12, )", "Microsoft.Extensions.Hosting.WindowsServices": "[10.0.12, )", - "Wcs.Api.Contracts": "[0.1.0-preview.1, )", - "Wcs.Engine": "[0.1.0-preview.1, )", - "Wcs.WebEditor": "[0.1.0-preview.1, )", - "Wcs.Wms.Client": "[0.1.0-preview.1, )" + "Wcs.Api.Contracts": "[0.1.0, )", + "Wcs.Engine": "[0.1.0, )", + "Wcs.WebEditor": "[0.1.0, )", + "Wcs.Wms.Client": "[0.1.0, )" } }, "wcs.webeditor": { "type": "Project", "dependencies": { "Microsoft.FluentUI.AspNetCore.Components": "[4.14.4, )", - "Wcs.Api.Client": "[0.1.0-preview.1, )", - "Wcs.Api.Contracts": "[0.1.0-preview.1, )" + "Wcs.Api.Client": "[0.1.0, )", + "Wcs.Api.Contracts": "[0.1.0, )" } }, "wcs.wms.client": { "type": "Project", "dependencies": { - "Wcs.Wms.Contracts": "[0.1.0-preview.1, )" + "Wcs.Wms.Contracts": "[0.1.0, )" } }, "wcs.wms.contracts": { diff --git a/tools/Wcs.ContractCheck/tests/Wcs.ContractCheck.Test/packages.lock.json b/tools/Wcs.ContractCheck/tests/Wcs.ContractCheck.Test/packages.lock.json index fd4da1d..6b53535 100644 --- a/tools/Wcs.ContractCheck/tests/Wcs.ContractCheck.Test/packages.lock.json +++ b/tools/Wcs.ContractCheck/tests/Wcs.ContractCheck.Test/packages.lock.json @@ -709,20 +709,20 @@ "log.interface": { "type": "Project", "dependencies": { - "Helper": "[0.1.0-preview.1, )" + "Helper": "[0.1.0, )" } }, "wcs.api.client": { "type": "Project", "dependencies": { "Microsoft.AspNetCore.SignalR.Client": "[10.0.13, )", - "Wcs.Api.Contracts": "[0.1.0-preview.1, )" + "Wcs.Api.Contracts": "[0.1.0, )" } }, "wcs.api.contracts": { "type": "Project", "dependencies": { - "Wcs.Common": "[0.1.0-preview.1, )" + "Wcs.Common": "[0.1.0, )" } }, "wcs.common": { @@ -731,33 +731,33 @@ "wcs.connection.interface": { "type": "Project", "dependencies": { - "Wcs.Common": "[0.1.0-preview.1, )" + "Wcs.Common": "[0.1.0, )" } }, "wcs.connection.test": { "type": "Project", "dependencies": { - "Wcs.Connection.Interface": "[0.1.0-preview.1, )" + "Wcs.Connection.Interface": "[0.1.0, )" } }, "wcs.contractcheck": { "type": "Project", "dependencies": { "Microsoft.AspNetCore.Mvc.Testing": "[10.0.12, )", - "Wcs.Host": "[0.1.0-preview.1, )", - "Wcs.Wms.Client": "[0.1.0-preview.1, )" + "Wcs.Host": "[0.1.0, )", + "Wcs.Wms.Client": "[0.1.0, )" } }, "wcs.engine": { "type": "Project", "dependencies": { - "Helper": "[0.1.0-preview.1, )", - "Log.Interface": "[0.1.0-preview.1, )", + "Helper": "[0.1.0, )", + "Log.Interface": "[0.1.0, )", "Microsoft.EntityFrameworkCore.Sqlite": "[10.0.12, )", - "Wcs.Common": "[0.1.0-preview.1, )", - "Wcs.Connection.Interface": "[0.1.0-preview.1, )", - "Wcs.Connection.Test": "[0.1.0-preview.1, )", - "Wcs.Wms.Contracts": "[0.1.0-preview.1, )" + "Wcs.Common": "[0.1.0, )", + "Wcs.Connection.Interface": "[0.1.0, )", + "Wcs.Connection.Test": "[0.1.0, )", + "Wcs.Wms.Contracts": "[0.1.0, )" } }, "wcs.host": { @@ -766,24 +766,24 @@ "Microsoft.AspNetCore.App.Internal.Assets": "[10.0.12, )", "Microsoft.AspNetCore.OpenApi": "[10.0.12, )", "Microsoft.Extensions.Hosting.WindowsServices": "[10.0.12, )", - "Wcs.Api.Contracts": "[0.1.0-preview.1, )", - "Wcs.Engine": "[0.1.0-preview.1, )", - "Wcs.WebEditor": "[0.1.0-preview.1, )", - "Wcs.Wms.Client": "[0.1.0-preview.1, )" + "Wcs.Api.Contracts": "[0.1.0, )", + "Wcs.Engine": "[0.1.0, )", + "Wcs.WebEditor": "[0.1.0, )", + "Wcs.Wms.Client": "[0.1.0, )" } }, "wcs.webeditor": { "type": "Project", "dependencies": { "Microsoft.FluentUI.AspNetCore.Components": "[4.14.4, )", - "Wcs.Api.Client": "[0.1.0-preview.1, )", - "Wcs.Api.Contracts": "[0.1.0-preview.1, )" + "Wcs.Api.Client": "[0.1.0, )", + "Wcs.Api.Contracts": "[0.1.0, )" } }, "wcs.wms.client": { "type": "Project", "dependencies": { - "Wcs.Wms.Contracts": "[0.1.0-preview.1, )" + "Wcs.Wms.Contracts": "[0.1.0, )" } }, "wcs.wms.contracts": { From 38bccdc1fec7b19b6498c9ae110da740de691b09 Mon Sep 17 00:00:00 2001 From: Riccardo Finizio <19975987+BlkHd@users.noreply.github.com> Date: Fri, 16 Oct 2026 13:32:23 +0200 Subject: [PATCH 2/2] Workflows: the draft release gets --prerelease whole; no NuGet cache for the link check - release.yml: $prerelease and $files are arrays, so splatting passes "--prerelease" and a single file whole instead of one character at a time (the draft of v0.1.0-preview.1 failed with "no matches found for `-`") - ci.yml: the Markdown links job does not cache NuGet packages: Wcs.LinkCheck has none, so on a cache miss the packages folder never exists and saving the cache failed the job - CHANGELOG: the release workflow fix under 0.1.0, Fixed Co-Authored-By: Claude Opus 5.5 --- .github/workflows/ci.yml | 4 ++-- .github/workflows/release.yml | 6 ++++-- CHANGELOG.md | 4 ++++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3e5833d..f53fbbd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -173,11 +173,11 @@ jobs: timeout-minutes: 15 steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + # No NuGet cache: Wcs.LinkCheck has no packages, so on a cache miss the packages folder is + # never created and saving the cache fails the job. - uses: actions/setup-dotnet@a98b56852c35b8e3190ac28c8c2271da59106c68 # v6.0.0 with: global-json-file: global.json - cache: true - cache-dependency-path: "**/packages.lock.json" - name: Restore (locked mode) run: dotnet restore tools/Wcs.LinkCheck/src/Wcs.LinkCheck.csproj --locked-mode - name: Check the links of the current documentation diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 855a9a7..1e892fd 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -105,6 +105,8 @@ jobs: env: GH_TOKEN: ${{ github.token }} run: | - $prerelease = if ($env:WCS_VERSION.Contains('-')) { @('--prerelease') } else { @() } - $files = Get-ChildItem -LiteralPath release/dist -File | ForEach-Object FullName + # @() around both: a single value would come back as a string, and splatting a string + # passes it to gh one character at a time ("no matches found for `-`"). + $prerelease = @(if ($env:WCS_VERSION.Contains('-')) { '--prerelease' }) + $files = @(Get-ChildItem -LiteralPath release/dist -File | ForEach-Object FullName) gh release create $env:GITHUB_REF_NAME @files --draft --verify-tag --title "WCS $env:WCS_VERSION" --notes-file release/notes.md @prerelease diff --git a/CHANGELOG.md b/CHANGELOG.md index c50eb1f..1c238d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -54,6 +54,10 @@ a patch never breaks what that page lists; a minor may, and says so in this file - `Wcs.DbTool`: `verify` and `restore` refuse a manifest whose file names are not bare WCS database names, are listed twice, or whose format is unknown, before touching any file. +- Release workflow: the `--prerelease` switch and a single release file reach `gh` whole. They + were splatted one character at a time, so the draft release of `0.1.0-preview.1` was not + created (it was created by hand from the same tag). + ### Changed - Host: a warning at startup when `Wcs:ApiKey` or `Wcs:ReadOnlyApiKey` is shorter than 32