Releases And Compatibility¶
Tua coordinates the Rust crates, tua CLI, language server, and VS Code
extension under one version. The authoritative value is
[workspace.package].version in the root Cargo.toml; generated package
metadata is checked by make version-drift-check.
Published Channels¶
- GitHub Releases ship the
standalone
tuaarchives, platform VSIX packages, per-file checksums, and the combinedSHA256SUMSmanifest. - Visual Studio Marketplace and Open VSX publish the same platform VSIX packages after the matching GitHub release is published.
- GitHub Pages serves the public
documentation site from the repository's
mainbranch.
Supported Release Artifacts¶
Tagged releases build these server and VSIX pairs:
| Platform | Rust target | VSIX target |
|---|---|---|
| Linux x64 | x86_64-unknown-linux-gnu |
linux-x64 |
| Windows x64 | x86_64-pc-windows-msvc |
win32-x64 |
| macOS Intel | x86_64-apple-darwin |
darwin-x64 |
| macOS Apple silicon | aarch64-apple-darwin |
darwin-arm64 |
Every platform VSIX contains the matching tua server and uses it by default.
Standalone server archives include the executable, README, license, and
changelog. Tua does not download or execute an unverified server after
extension installation.
Release assets are checksummed and receive GitHub build-provenance attestations,
but are not platform code-signed today. Every archive and VSIX has an individual
.sha256 file, and the release includes one SHA256SUMS manifest verified by
CI before publication.
Verify A Download¶
Verify release artifacts before installing them
Release assets are checksummed and attested, but are not platform
code-signed today. Compare the downloaded archive or VSIX against its entry
in SHA256SUMS before running or installing it.
On Linux:
On macOS:
Compare the printed value with the matching line in SHA256SUMS. On Windows,
use Get-FileHash <file> -Algorithm SHA256 and compare the result.
With the GitHub CLI installed, verify that an artifact was produced by Tua's release workflow from this repository:
Provenance complements the checksum manifest; it is not a substitute for platform signing or for reviewing which tagged source was released.
Compatibility Policy¶
Before 1.0, Tua uses semantic versions with these expectations:
- patch releases fix behavior without intentionally changing valid source;
- minor releases may evolve syntax, type precision, configuration, or editor behavior when the changelog includes migration notes;
- the CLI, server, and extension from one release are tested and distributed as a matching set;
- newer extensions may launch a user-selected older server, but only matching release pairs are guaranteed and tested;
- generated Lua continues to target Lua 5.1-style Lua, LuaJIT, and LOVE 11.x unless a release note explicitly announces a target change.
The VS Code extension requires VS Code 1.94 or newer. That baseline provides the native inlay-hint maximum-length setting used by Tua's compact-hint toggle.
Release Process¶
- Add detailed release notes under
[Unreleased]. Before preparing a release, lead them with### Release summary: a short overview,#### Highlightswith three to six user-facing bullets, and#### Upgrade noteswhen needed. Aim for 150–300 words and include material compatibility or security changes. The next level-three heading ends the summary. The GitHub release generator publishes only this summary, promotes its subheadings, and adds a link to the full tagged changelog and download/checksum guidance. Older entries without a summary retain full-note extraction. Commit the notes and leave the worktree clean. - Refresh the editor README screenshots when the release changes editor UI,
and review their captions and visual quality. Run
make extension-screenshotsin a graphical session with a staged compiler and local VS Code/VSCodium;make extension-screenshots-checkverifies existing artifacts without a GUI. See the repository'sskills/tua-release-prep/SKILL.mdfor preparation and provenance checks. Run the required extension-host suite. - Run
make release-version VERSION=<version>. The guarded script updates Rust, VS Code, lockfile, changelog, and release-documentation versions; runsmake ci-check; creates arelease: v<version>commit; and adds an annotatedv<version>tag. It refuses empty release notes, dirty worktrees, non-increasing versions, and existing tags. - Inspect the commit and tag, then push both with
git push origin HEAD v<version>. The script never pushes automatically. - The release workflow validates the tag and changelog, invokes the complete trusted CI workflow, builds all platform pairs only after those gates pass, verifies checksums, and publishes the GitHub release.
- After the release workflow completes successfully, the extension publish workflow downloads its published VSIX assets and pushes them to Visual Studio Marketplace and Open VSX. Failed releases never start publishing.
Manual dispatch of the release workflow is accepted only when it runs from the exact matching tag. The extension workflow can also be dispatched manually with an existing release tag. This prevents an untagged build from publishing versioned artifacts while preserving a recovery path for extension registries.
See CHANGELOG.md for release-specific additions and migration notes.