v0.4.1
The documented Quickstart works end to end for the first time — and tan bootstrap now exits 1 instead of 0 when it could not install what your next command needs.
Read the breaking change first. This is a patch number, so it does not carry the warning: tan bootstrap used to print bootstrap: complete. and exit 0 after failing to install the Python dependencies its own next step needs. It now prints bootstrap: INCOMPLETE, names which installs failed, and exits 1. Anything scripting that exit code on such a host sees 1 where it saw 0. Pass --allow-partial to accept the workspace as-is. Every phase is still non-fatal and the workspace is still left on disk — only the verdict changed (#220).
First release paired with alp-sdk v0.14.0.
Highlights
tan initcan find the SDKtan bootstrapjust created — the documented Quickstart was broken at step 3 (#218).- The Zephyr SDK finally carries a Fix button, and 7-Zip has a real check instead of one line of prose (#203, #204, #210).
tan doctorprints its remedies without--verboseand reads the debug target fromboard.yamlinstead of hardcodingnative-host(#208).tan bootstrapwill not report a success it cannot back up — breaking, see above (#220).- CI now runs the commands a customer types:
install.sh→bootstrap→doctor→init→build, on a runner that starts with none of it (#207). - Every emitted issue code is registered and gated —
envelope-contract.jsongoes from 4 codes to 68 (#219). - A tag whose CHANGELOG section is missing now fails instead of publishing a one-line stub body (#212).
- Re-vendored at alp-sdk
v0.14.0, macOS prerequisites included (#231).
Changed
- BREAKING —
tan bootstrapexit code. Detailed above.- Before: dependency install fails →
bootstrap: complete., exit0. - After:
bootstrap: INCOMPLETE -- <names> did not install, exit1;--allow-partialrestores exit0. - Applies to
zephyr-requirements,sdk-extrasandeditable-install.pip-upgradeis excluded — the pip already present still installs packages.
- Before: dependency install fails →
- macOS reads its own prerequisite list. alp-sdk v0.14.0 added
xzandwgettoprerequisites.posixplus aprerequisites.macosthat omits them; tan keyed off anis_windowsbool, which would have madetan bootstraprefuse on stock macOS (#231). envelope-contract.jsonnow carries the whole issue-code registry, all three statuses, not a frozen-only subset (#219).tan bootstrapreports absolute paths indata.*and--print-env, matchingproject.rootin the same envelope (#217).
Added
tan debug-config --svd <PATH>— the first and only producer ofLaunchResolution.svd(#197).--allow-partialontan bootstrap— report success despite a failed dependency install (#220).sevenZipcheck intan doctor --build, native Windows only and only while the Zephyr SDK is still absent (#204).
Fixed
- SDK discovery now considers a checkout that is a child of the workspace root — it checked self, siblings and ancestors, never a child, which is exactly where the documented flow puts it (#218).
zephyrSdkreachesmissingPrerequisiteswith a runnablewest sdk install --version 1.0.1 -t arm-zephyr-eabirather than being structurally invisible to consumers (#203, #210).tan doctorno longer hides every remedy it computed behind--verbose(#208).debug-configkeeps the comments in yourlaunch.jsoninstead of reserialising the document (#182).debug-config'sbaremetal-mcudraft carriesconfigFiles/targetId, so OpenOCD no longer gets aserverpathwith nothing to load (#139).- The workspace guard records where it moved your checkout, so the next documented command still resolves (#206).
- The npm shim's version tracks the workspace, and
verify-versionnow fails a tag where it does not (#202).
Install
One-liner — resolves this release, verifies the sha256 against checksums.txt, and installs:
curl -fsSL https://raw.githubusercontent.com/alplabai/tan-cli/main/install.sh | shirm https://raw.githubusercontent.com/alplabai/tan-cli/main/install.ps1 | iexOr pick an asset directly:
| Platform | Asset |
|---|---|
| Linux x86_64 | tan-x86_64-unknown-linux-musl |
| Linux arm64 | tan-aarch64-unknown-linux-musl |
| macOS Intel | tan-x86_64-apple-darwin |
| macOS Apple Silicon | tan-aarch64-apple-darwin |
| Windows x64 | tan-x86_64-pc-windows-msvc.exe |
| Windows arm64 | tan-aarch64-pc-windows-msvc.exe |
crates.io (Rust 1.86+, edition 2024) — published as alp-tan-cli; the installed binary is still tan:
cargo install alp-tan-cli --lockednpm is not available. @alplabai/tan does not exist on the registry at any version — the publish job failed with npm error code EOTP because the configured token requires an interactive one-time password (#233). Use a release asset, the installer, or crates.io.
Release assets
-gnuLinux binaries are cross-built with a pinned glibc 2.31
floor -- they run on Debian 11 (bullseye) / Ubuntu 20.04 and newer.
-muslLinux binaries are fully static and run on any distro/libc.- Every binary +
checksums.txtcarries a GitHub build-provenance
attestation. Verify with:
gh attestation verify <downloaded-file> --repo alplabai/tan-cli
Full detail: CHANGELOG.md · full diff