Skip to content

fix(release): align AICX public binary install lane#2

Closed
m-szymanska wants to merge 8 commits intomainfrom
agent/0.9.5-release-binaries
Closed

fix(release): align AICX public binary install lane#2
m-szymanska wants to merge 8 commits intomainfrom
agent/0.9.5-release-binaries

Conversation

@m-szymanska
Copy link
Copy Markdown
Contributor

Summary

  • Aligns AICX release-mode install with the actual v0.6.5 GitHub Release asset shape.
  • Documents GitHub Releases as the supported public binary install lane for v0.6.5.
  • Marks npm distribution as planned/inactive until its platform matrix matches current release assets.
  • Adds a 0.6.5 changelog entry.

Not included

  • No npm publish.
  • No release tag changes.
  • No GitHub Release body edit.

Verification

  • bash -n install.sh
  • git diff --check
  • Downloaded macOS arm64 v0.6.5 asset, verified .sha256, confirmed aicx, aicx-mcp, and install.sh are present.

Release note

Draft PR intentionally. This makes the AICX source assets safe for Loctree bundle consumption; npm remains a follow-up.

- add release-binaries make target for aicx and aicx-mcp
- copy built binaries into operator-provided STAGING_DIR
- emit component metadata for cross-repo Loctree bundles
- optionally codesign macOS binaries when CODESIGN is enabled
- keep binary release sha256 files usable after download

- write the archive basename instead of the build container /out path

- preserve existing unsigned bundle packaging semantics
- Make GitHub Releases the documented public install path for v0.6.5.\n- Update release-mode asset naming to the published slim unsigned tarballs.\n- Switch Linux release detection to GNU x64/arm64 and fail loudly for unsupported Intel Mac.\n- Clarify that npm wrapper packages are not the supported v0.6.5 install path yet.
- Add a 0.6.5 changelog entry for the public GitHub Release assets.\n- Mark the npm distribution lane as planned but inactive for v0.6.5.\n- Document that the current npm matrix still expects the older zip/musl shape.\n- Point npm publishing checks at the real v0.6.5 slim unsigned tarball asset shape.
Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the release infrastructure for version 0.6.5, shifting the primary distribution channel from npm to GitHub Releases. Key changes include the introduction of slim unsigned .tar.gz archives for macOS arm64 and Linux (x64 and arm64 GNU) targets. The Makefile, install.sh, and release_bundle.sh scripts have been updated to support these new targets and the specific naming convention for unsigned bundles. Additionally, documentation across the repository has been revised to reflect that npm distribution is currently inactive for this version until platform packages are realigned. I have no feedback to provide as no review comments were included.

- Checkout Loctree/rust-memex at the pinned 0.6.4 migration commit in CI and release workflows.
- Run Cargo and release assembly steps from the nested aicx checkout so ../rust-memex resolves on runners.
- Update cache/artifact paths after nested checkout and teach actionlint about our self-hosted runner labels.
- Stop saving the nested aicx/target directory through actions/cache.
- Keep Cargo registry/git caching while avoiding long post-job cache uploads on self-hosted runners.
- Scope cache keys to aicx/Cargo.lock after the rust-memex sibling checkout.
- Remove actions/cache from PR CI after repeated post-job cache hangs on self-hosted runners.
- Remove the same cache steps from release verify/build jobs so release runs favor predictability over cache speed.
- Keep the rust-memex sibling checkout and nested aicx working directory behavior unchanged.
@m-szymanska m-szymanska marked this pull request as ready for review May 7, 2026 19:51
@m-szymanska m-szymanska requested review from Szowesgad and Copilot May 7, 2026 21:50
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Aligns the documented and scripted “public binary install” path around GitHub Releases for v0.6.5, and updates release/CI automation to build from an aicx/ subdirectory with a checked-out rust-memex sibling.

Changes:

  • Updates install.sh + top-level docs to treat GitHub Releases (with .sha256 sidecars) as the supported binary install lane for v0.6.5, and marks npm as planned/inactive until realigned.
  • Extends tools/release_bundle.sh/Makefile to support a binary-only tarball bundling mode with configurable build command/target/dist.
  • Adjusts CI/release workflows to checkout aicx into a subdirectory and fetch Loctree/rust-memex at a pinned ref.

Reviewed changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
tools/release_bundle.sh Adds “binaries-only” unsigned tar.gz bundle mode and build command override.
README.md Updates install instructions to use GitHub Releases via install.sh.
Makefile Adds release-binaries target and passes target/dist/dry-run into release-bundle targets.
install.sh Changes release asset targeting/naming and installer messaging around public install lanes.
docs/RELEASES.md Documents v0.6.5 distribution channels, current asset shape, and maintainer bundle flow.
distribution/npm/README.md Marks npm lane as planned/inactive for v0.6.5 until realigned.
distribution/npm/PUBLISHING.md Adds warnings and updates examples to reflect v0.6.5 release asset shape.
CHANGELOG.md Adds a 0.6.5 entry describing the release lane changes.
.github/workflows/release.yml Checks out aicx/ + rust-memex/, sets working-directory, adjusts artifact pathing.
.github/workflows/ci.yml Checks out aicx/ + rust-memex/, sets working-directory for Rust/Semgrep steps.
.github/actionlint.yaml Adds actionlint configuration for self-hosted runner labels.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread tools/release_bundle.sh
Comment on lines 126 to 127
require_cmd shasum

Comment thread tools/release_bundle.sh
Comment on lines +201 to +205
# shellcheck disable=SC2086
$BUILD_CMD --locked --release --target "$TARGET" --features "$FEATURES_VALUE" --bin aicx --bin aicx-mcp
else
cargo build --locked --release --target "$TARGET" --bin aicx --bin aicx-mcp
# shellcheck disable=SC2086
$BUILD_CMD --locked --release --target "$TARGET" --bin aicx --bin aicx-mcp
Comment thread Makefile
Comment on lines 19 to +23
FEATURES ?=
TARGET ?= $(shell rustc -vV | sed -n 's/^host: //p')
CODESIGN ?= auto
DIST_DIR ?= $(CURDIR)/dist
DRY_RUN ?= 0
Comment thread README.md

```bash
npm install -g @loctree/aicx
curl -fsSLO https://raw.githubusercontent.com/Loctree/aicx/main/install.sh
Comment thread install.sh
Comment on lines 429 to 432
release_tag=$(resolve_release_tag)
target=$(detect_release_target)
version="${release_tag#v}"
archive_ext=$(detect_release_archive_ext)
archive_name="aicx-v${version}-${target}.${archive_ext}"
archive_name="aicx-${release_tag}-${target}-slim-unsigned.tar.gz"
base_url="https://github.com/${AICX_RELEASE_REPO}/releases/download/${release_tag}"
Comment thread docs/RELEASES.md
Comment on lines +40 to +64
## What the Public Release Asset Set Contains

Tagging `vX.Y.Z` triggers `.github/workflows/release.yml`, which:

- verifies the tag matches `Cargo.toml`
- reruns the required release gates: `semgrep`, default clippy, native GGUF clippy, binary tests, native GGUF tests, and `cargo fmt -- --check`
- builds both shipped binaries: `aicx` and `aicx-mcp`
- builds Linux artifacts on `ops-linux`
- builds macOS artifacts on `dragon-macos`
- imports the macOS signing certificate from GitHub org secrets on `dragon-macos`
- signs and notarizes macOS release bundles before upload
- builds Linux artifacts on the Linux release runner
- builds macOS artifacts on the macOS release runner
- packages archives plus `LICENSE`, `README.md`, `install.sh`, and command docs
- uploads SHA-256 checksum files alongside each archive
- creates or updates the matching GitHub Release using the current version section from `CHANGELOG.md`
- keeps self-hosted runners lean by not caching `target/` in release jobs and cleaning Cargo build artifacts after packaging/upload

Current binary targets:

- `x86_64-unknown-linux-musl`
- `x86_64-apple-darwin`
- `aarch64-apple-darwin`
- `x86_64-unknown-linux-gnu`
- `aarch64-unknown-linux-gnu`

Archive naming is deterministic:

- `aicx-vX.Y.Z-x86_64-unknown-linux-musl.tar.gz`
- `aicx-vX.Y.Z-x86_64-apple-darwin.zip`
- `aicx-vX.Y.Z-aarch64-apple-darwin.zip`
- `aicx-vX.Y.Z-aarch64-apple-darwin-slim-unsigned.tar.gz`
- `aicx-vX.Y.Z-x86_64-unknown-linux-gnu-slim-unsigned.tar.gz`
- `aicx-vX.Y.Z-aarch64-unknown-linux-gnu-slim-unsigned.tar.gz`
@Szowesgad Szowesgad closed this May 9, 2026
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.

3 participants