Skip to content

Release v0.2.0#28

Merged
PanterSoft merged 17 commits into
mainfrom
dev
Jul 13, 2026
Merged

Release v0.2.0#28
PanterSoft merged 17 commits into
mainfrom
dev

Conversation

@PanterSoft

Copy link
Copy Markdown
Owner

Summary

  • Merge dev into main to cut the v0.2.0 release
  • Includes: static-PIE-aware musl builds, armv7 release leg, Docker e2e distro matrix, macOS SDK/linking fixes, multi-package install support, tsi ui TUI, no-git tarball fallback for tsi update, docs fixes

Test plan

  • CI passes on this PR
  • After merge, tag v0.2.0 on main to trigger the release build/publish workflow

PanterSoft and others added 17 commits March 12, 2026 19:50
…ication

- Added a step to run tests in the release workflow.
- Enabled recursive submodule checkout in the Rust CI workflow.
- Expanded the test matrix to include additional OS configurations.
- Cleaned up .gitignore by removing unnecessary entries.
- Updated Makefile to include a new target for syncing package definitions.
- Enhanced README and documentation for in-tree package repository usage.
- Implemented prefix extraction from CLI commands for early config loading.
- Improved package fetching with SHA-256 checksum verification for downloaded archives.
- Added support for architecture-specific environment variables in package definitions.
- Introduced a pure-Rust SHA-256 implementation for file integrity checks.
- Updated package installation logic to handle source directories more robustly.
- Enhanced symlink creation on Windows to handle both file and directory symlinks.
- Updated submodule reference for tsi-packages to the latest commit.
…S SDK var expansion

Co-Authored-By: claude-flow <ruv@ruv.net>
…tead

-isystem $SDK/usr/include placed C headers ahead of libc++'s wrapper
headers, breaking every C++ package (aria2, zeromq, icu) with
"<cstdlib> tried including <stdlib.h> but didn't find libc++'s <stdlib.h>".
SDKROOT gives clang the SDK with its default (correct) search order.
Verified: zeromq 4.3.5 now builds and links.

Co-Authored-By: claude-flow <ruv@ruv.net>
- xz2/bzip2 'static' features: vendored C sources linked statically,
  required for fully static musl release binaries
- semver_compare: pre-release segments (rc1) sort below releases, with test
- database: error on corrupted DB instead of silently resetting; upsert
  instead of skipping on re-register
- uninstall: take the install lock
- resolver: order build graph by runtime + build dependencies
- fetch: re-verify SHA-256 of cached archives with one re-download retry;
  guard zip extraction against path traversal; sync git submodules on
  cache hit; recurse into symlinked dirs when copying
- build: patch paths resolve under source dir; CPPFLAGS augmentation for
  make/custom builds; memoized macOS SDK lookup
- doctor: warn instead of crash on unopenable database
- config: default strict_isolation=true when tsi.toml is absent

Co-Authored-By: claude-flow <ruv@ruv.net>
…aries

New docker-tests.yml workflow:
- build-binary: static x86_64/aarch64-musl binaries on native runners,
  with a statically-linked assertion (ldd)
- container-tests: bare alpine/debian/ubuntu/fedora containers install
  only cc+make, then run a real 'tsi install bzip2' source build,
  verify, and uninstall (docker/e2e-test.sh)
- no-tools-test: bare containers with nothing installed prove the binary
  has zero runtime deps and 'tsi install' fails gracefully without a
  toolchain (docker/no-tools-test.sh)

Local docker/ scripts mirror CI (compose e2e-* services reuse a host
binary); test-install.sh fixed for the tsi-packages submodule path and
POSIX sh. Bump tsi-packages for the bzip2 target/sha256 fix the e2e
depends on.

All 8 e2e legs validated locally on arm64 (Alpine, Debian, Ubuntu,
Fedora all 11/11; no-tools pass on bare Alpine + Debian).

Co-Authored-By: claude-flow <ruv@ruv.net>
Linux artifacts switch to x86_64/aarch64-unknown-linux-musl (same
artifact names, so tsi-bootstrap.sh keeps working) plus a cross-compiled
armv7-unknown-linux-musleabihf leg matching bootstrap's detect_arch.
Every Linux leg gains a static-linkedness verification step as a
regression guard for the single-static-binary promise.

Co-Authored-By: claude-flow <ruv@ruv.net>
x86_64-musl Rust binaries are static-PIE; glibc ldd reports them as
'statically linked', not 'not a dynamic executable', so the previous
grep failed a correct binary. Check for zero NEEDED entries via readelf
instead (docker-tests + release). test.yml/docs.yml triggered on
'develop', which doesn't exist — the active branch is 'dev'. Bump
tsi-packages for the zlib 1.3.1 fix.

Co-Authored-By: claude-flow <ruv@ruv.net>
Co-Authored-By: claude-flow <ruv@ruv.net>
When git is unavailable, download the package repo as a GitHub archive
tarball with the built-in HTTP client (rustls, bundled roots) and
extract it with the built-in tar support. Verified in a bare Alpine
container without git: 'tsi update' + 'tsi install bzip2' both succeed.
Non-GitHub --repo URLs without git get a clear actionable error.

Co-Authored-By: claude-flow <ruv@ruv.net>
Co-Authored-By: claude-flow <ruv@ruv.net>
Package list with installed markers and incremental '/' filter, details
pane, i/u install/uninstall via the exact CLI code paths (TUI suspends
to stream real build output, resumes and refreshes state), j/k or
arrow navigation, q quits. RAII terminal guard plus panic hook so the
terminal is always restored; clean error when stdout is not a TTY;
hint to run 'tsi update' when the registry is empty. Both new deps are
pure Rust (no C linkage), preserving the static-binary promise.

Co-Authored-By: claude-flow <ruv@ruv.net>
Links from docs pages to files outside docs/ can't resolve as doc
targets; point them at GitHub instead. Unblocks the docs workflow,
which never ran on dev until the branch-trigger fix.

Co-Authored-By: claude-flow <ruv@ruv.net>
@PanterSoft
PanterSoft merged commit 6be3018 into main Jul 13, 2026
20 of 28 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant