Skip to content

v0.4.1

Choose a tag to compare

@github-actions github-actions released this 29 Jul 22:22
· 426 commits to main since this release
e4e0c53

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 init can find the SDK tan bootstrap just 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 doctor prints its remedies without --verbose and reads the debug target from board.yaml instead of hardcoding native-host (#208).
  • tan bootstrap will not report a success it cannot back up — breaking, see above (#220).
  • CI now runs the commands a customer types: install.shbootstrapdoctorinitbuild, on a runner that starts with none of it (#207).
  • Every emitted issue code is registered and gatedenvelope-contract.json goes 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 bootstrap exit code. Detailed above.
    • Before: dependency install fails → bootstrap: complete., exit 0.
    • After: bootstrap: INCOMPLETE -- <names> did not install, exit 1; --allow-partial restores exit 0.
    • Applies to zephyr-requirements, sdk-extras and editable-install. pip-upgrade is excluded — the pip already present still installs packages.
  • macOS reads its own prerequisite list. alp-sdk v0.14.0 added xz and wget to prerequisites.posix plus a prerequisites.macos that omits them; tan keyed off an is_windows bool, which would have made tan bootstrap refuse on stock macOS (#231).
  • envelope-contract.json now carries the whole issue-code registry, all three statuses, not a frozen-only subset (#219).
  • tan bootstrap reports absolute paths in data.* and --print-env, matching project.root in the same envelope (#217).

Added

  • tan debug-config --svd <PATH> — the first and only producer of LaunchResolution.svd (#197).
  • --allow-partial on tan bootstrap — report success despite a failed dependency install (#220).
  • sevenZip check in tan 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).
  • zephyrSdk reaches missingPrerequisites with a runnable west sdk install --version 1.0.1 -t arm-zephyr-eabi rather than being structurally invisible to consumers (#203, #210).
  • tan doctor no longer hides every remedy it computed behind --verbose (#208).
  • debug-config keeps the comments in your launch.json instead of reserialising the document (#182).
  • debug-config's baremetal-mcu draft carries configFiles/targetId, so OpenOCD no longer gets a serverpath with 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-version now 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 | sh
irm https://raw.githubusercontent.com/alplabai/tan-cli/main/install.ps1 | iex

Or 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 --locked

npm 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

  • -gnu Linux binaries are cross-built with a pinned glibc 2.31
    floor -- they run on Debian 11 (bullseye) / Ubuntu 20.04 and newer.
    -musl Linux binaries are fully static and run on any distro/libc.
  • Every binary + checksums.txt carries a GitHub build-provenance
    attestation. Verify with:
    gh attestation verify <downloaded-file> --repo alplabai/tan-cli

Full detail: CHANGELOG.md · full diff