Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
8 changes: 5 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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
15 changes: 14 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -46,6 +54,10 @@ released, and how its section here becomes the text of the GitHub release, is in
- `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
Expand Down Expand Up @@ -119,5 +131,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
2 changes: 1 addition & 1 deletion CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -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)).
Expand Down
4 changes: 2 additions & 2 deletions Common/Log.Windows/packages.lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
"log.interface": {
"type": "Project",
"dependencies": {
"Helper": "[0.1.0-preview.1, )"
"Helper": "[0.1.0, )"
}
}
},
Expand All @@ -37,7 +37,7 @@
"log.interface": {
"type": "Project",
"dependencies": {
"Helper": "[0.1.0-preview.1, )"
"Helper": "[0.1.0, )"
}
}
}
Expand Down
2 changes: 1 addition & 1 deletion Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
the "version" field of GET /api/v1/status.
-->
<PropertyGroup>
<Version>0.1.0-preview.1</Version>
<Version>0.1.0</Version>
<Authors>Sun Tech Srl</Authors>
<Company>Sun Tech Srl</Company>
<Copyright>Copyright 2026 Sun Tech Srl</Copyright>
Expand Down
15 changes: 8 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
`<ProjectReference Include="external\WCS\WCS\Wcs.Api.Client\src\Wcs.Api.Client.csproj" />`. Moving to
Expand Down Expand Up @@ -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 |
Expand Down
4 changes: 2 additions & 2 deletions SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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.

Expand Down
5 changes: 3 additions & 2 deletions SUPPORT.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
2 changes: 1 addition & 1 deletion WCS/Wcs.Api.Client/src/packages.lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@
"wcs.api.contracts": {
"type": "Project",
"dependencies": {
"Wcs.Common": "[0.1.0-preview.1, )"
"Wcs.Common": "[0.1.0, )"
}
},
"wcs.common": {
Expand Down
42 changes: 21 additions & 21 deletions WCS/Wcs.Api.Client/tests/Wcs.Api.Client.Test/packages.lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -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": {
Expand All @@ -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": {
Expand All @@ -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": {
Expand All @@ -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, )"
}
Expand All @@ -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": {
Expand All @@ -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, )"
}
}
Expand Down
2 changes: 1 addition & 1 deletion WCS/Wcs.Connection.Test/src/packages.lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"wcs.connection.interface": {
"type": "Project",
"dependencies": {
"Wcs.Common": "[0.1.0-preview.1, )"
"Wcs.Common": "[0.1.0, )"
}
}
}
Expand Down
6 changes: 3 additions & 3 deletions WCS/Wcs.Engine/src/packages.lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -356,7 +356,7 @@
"log.interface": {
"type": "Project",
"dependencies": {
"Helper": "[0.1.0-preview.1, )"
"Helper": "[0.1.0, )"
}
},
"wcs.common": {
Expand All @@ -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": {
Expand Down
20 changes: 10 additions & 10 deletions WCS/Wcs.Engine/tests/Wcs.Engine.Test/packages.lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,7 @@
"log.interface": {
"type": "Project",
"dependencies": {
"Helper": "[0.1.0-preview.1, )"
"Helper": "[0.1.0, )"
}
},
"wcs.common": {
Expand All @@ -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": {
Expand All @@ -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, )"
}
}
Expand Down
Loading