Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/release-bundles.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ on:
aicx_version:
description: "AICX release version to include"
required: false
default: "0.12.3"
default: "0.12.5"
type: string
push:
tags:
Expand Down Expand Up @@ -52,7 +52,7 @@ jobs:
else
VERSION="${REF_NAME#v}"
fi
AICX_VERSION="${INPUT_AICX_VERSION:-0.12.3}"
AICX_VERSION="${INPUT_AICX_VERSION:-0.12.5}"

if [[ ! "$VERSION" =~ ^[0-9]+[.][0-9]+[.][0-9]+$ ]]; then
echo "version must look like x.y.z" >&2
Expand Down
23 changes: 14 additions & 9 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,23 @@ The format is based on Keep a Changelog, and this project adheres to Semantic Ve

## [Unreleased]

### Added

- The combined release workflow now builds a full Windows x64 MSVC tarball
containing `loct.exe`, `loctree.exe`, `loctree-mcp.exe`,
`loctree-lsp.exe`, `aicx.exe`, and `aicx-mcp.exe`, plus the raw
`loctree-lsp-windows-x64.exe` editor runtime and checksum sidecar.
## [0.14.4] - 2026-08-23

### Changed

- Combined bundles default to AICX 0.12.3 and derive addressability checks from
the same platform-to-asset mapping used for extraction. Release smoke now
starts all six full-bundle binaries and scans a committed Git fixture.
- Combined bundles now default to the corrective AICX 0.12.5 release across
local build tooling, tag workflows, tests, and operator documentation.

### Fixed

- Windows combined bundles now build, verify, smoke all six binaries against a
committed Git fixture, stage the editor LSP executable, and upload through
one Git Bash-safe path contract. Checksum generation and archive creation no
longer pass drive-qualified filenames through GNU tools.
- The first scoped npm publish has an explicit, preflighted bootstrap lane and
idempotent package publication; later releases remain on trusted publishing.
- `loctree-mcp` keeps shared CLI/logging dependencies cross-platform while
retaining `libc` as Unix-only, restoring the Windows MSVC build.

## [0.14.3] - 2026-08-23

Expand Down
12 changes: 6 additions & 6 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ members = [
# here is what moves the entire suite onto a new release number; `rust-version`
# is the floor CI and the Dockerfile toolchain must both satisfy.
[workspace.package]
version = "0.14.3"
version = "0.14.4"
edition = "2024"
rust-version = "1.93.0"
license = "BUSL-1.1"
Expand Down Expand Up @@ -84,9 +84,9 @@ schemars = "1"
# dedicated rename tracks land. Thin releases, npm, and Homebrew use the active
# loct / loct-mcp / loct-lsp naming contract instead.
# The local crates (for inter-crate dependencies)
loctree = { path = "loctree-rs", version = "0.14.3" }
loctree-ast = { path = "loctree-ast", version = "0.14.3" }
report-leptos = { path = "reports", version = "0.14.3" }
loctree = { path = "loctree-rs", version = "0.14.4" }
loctree-ast = { path = "loctree-ast", version = "0.14.4" }
report-leptos = { path = "reports", version = "0.14.4" }

# Release profile - good defaults for all crates
[profile.release]
Expand Down
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ release-binaries: setup-protoc

release-bundles:
@if [ -z "$(VERSION)" ]; then \
echo "VERSION is required. Usage: make release-bundles VERSION=0.14.3 [AICX_VERSION=0.12.3] [BUNDLE_TARGET=aarch64-apple-darwin|x86_64-unknown-linux-gnu|x86_64-pc-windows-msvc]" >&2; \
echo "VERSION is required. Usage: make release-bundles VERSION=0.14.4 [AICX_VERSION=0.12.5] [BUNDLE_TARGET=aarch64-apple-darwin|x86_64-unknown-linux-gnu|x86_64-pc-windows-msvc]" >&2; \
exit 1; \
fi
@set --; \
Expand Down Expand Up @@ -438,7 +438,7 @@ help:
@printf ' $(HELP_C_GREEN)%-18s$(HELP_C_RESET) %s\n' 'install' '- Install loct, loctree & loctree-mcp'
@printf ' $(HELP_C_GREEN)%-18s$(HELP_C_RESET) %s\n' 'install-all' '- Install loct, loctree, loctree-mcp & loctree-lsp'
@printf '%s\n' ' make release-bundles VERSION=X - Build combined Loctree+AICX release tarballs'
@printf '%s\n' ' Optional: AICX_VERSION=0.12.3 BUNDLE_TARGET=x86_64-unknown-linux-gnu'
@printf '%s\n' ' Optional: AICX_VERSION=0.12.5 BUNDLE_TARGET=x86_64-unknown-linux-gnu'
@printf '%s\n' ' Windows: BUNDLE_TARGET=x86_64-pc-windows-msvc builds the full six-binary .tar.gz bundle'
@printf '%s\n' ' Musl: BUNDLE_TARGET=x86_64-unknown-linux-musl builds a -core tarball without bundled AICX'
@printf ' $(HELP_C_GREEN)%-18s$(HELP_C_RESET) %s\n' 'test' '- Run all tests'
Expand Down
2 changes: 1 addition & 1 deletion distribution/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ not "cargo publish the crate and hope for the best."
The binary-first Loctree suite bundle is built by:

```bash
make release-bundles VERSION=0.14.3 AICX_VERSION=0.12.3
make release-bundles VERSION=0.14.4 AICX_VERSION=0.12.5
```

The same path is used by the GitHub Actions workflow
Expand Down
6 changes: 3 additions & 3 deletions distribution/build-bundle.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ AICX_RELEASE_BINARIES=(aicx aicx-mcp)
# Canonical AICX release coordinates used in release mode; --aicx-repo /
# --aicx-version override them, --aicx-root bypasses the download entirely.
AICX_REPO_DEFAULT="Loctree/aicx"
AICX_VERSION_DEFAULT="0.12.3"
AICX_VERSION_DEFAULT="0.12.5"

# Print the full CLI contract on --help or when no version argument is given.
usage() {
Expand All @@ -34,7 +34,7 @@ Usage:
Options:
--aicx-root <path> Developer override: build AICX from source instead
of the canonical GitHub release asset.
--aicx-version <version> AICX release version. Default: 0.12.3.
--aicx-version <version> AICX release version. Default: 0.12.5.
--aicx-tag <tag> AICX release tag. Default: v<aicx-version>.
--aicx-repo <owner/repo> AICX GitHub repo. Default: Loctree/aicx.
--loct-io-root <path> Root containing scripts/sync_releases.py.
Expand Down Expand Up @@ -65,7 +65,7 @@ Options:
-h, --help Show this help.

Default release mode downloads AICX from:
https://github.com/Loctree/aicx/releases/tag/v0.12.3
https://github.com/Loctree/aicx/releases/tag/v0.12.5

Developer override mode uses:
make -C <aicx-root> release-binaries STAGING_DIR=<staging> TARGET=<triple>
Expand Down
10 changes: 5 additions & 5 deletions distribution/npm/loct/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@loctree/loctree",
"version": "0.14.3",
"version": "0.14.4",
"description": "Loctree — structural code intelligence for AI agents. One runtime (loctree), one npm install. MCP and editor (LSP) modes run through `loct watch`.",
"keywords": [
"loctree",
Expand Down Expand Up @@ -50,9 +50,9 @@
"node": ">=14.0.0"
},
"optionalDependencies": {
"@loctree/loctree-darwin-arm64": "0.14.3",
"@loctree/loctree-darwin-x64": "0.14.3",
"@loctree/loctree-linux-x64-gnu": "0.14.3",
"@loctree/loctree-win32-x64-msvc": "0.14.3"
"@loctree/loctree-darwin-arm64": "0.14.4",
"@loctree/loctree-darwin-x64": "0.14.4",
"@loctree/loctree-linux-x64-gnu": "0.14.4",
"@loctree/loctree-win32-x64-msvc": "0.14.4"
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@loctree/loctree-darwin-arm64",
"version": "0.14.3",
"version": "0.14.4",
"description": "Loctree suite binaries (loct, loctree, loctree-mcp, loctree-lsp) for macOS Apple Silicon (ARM64). Technical delivery package for @loctree/loctree — do not install directly.",
"keywords": [
"loctree",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@loctree/loctree-darwin-x64",
"version": "0.14.3",
"version": "0.14.4",
"description": "Loctree suite binaries (loct, loctree, loctree-mcp, loctree-lsp) for macOS Intel (x64). Technical delivery package for @loctree/loctree — do not install directly.",
"keywords": [
"loctree",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@loctree/loctree-linux-x64-gnu",
"version": "0.14.3",
"version": "0.14.4",
"description": "Loctree suite binaries (loct, loctree, loctree-mcp, loctree-lsp) for Linux x64 (glibc). Technical delivery package for @loctree/loctree — do not install directly.",
"keywords": [
"loctree",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@loctree/loctree-win32-x64-msvc",
"version": "0.14.3",
"version": "0.14.4",
"description": "Loctree suite binaries (loct, loctree, loctree-mcp, loctree-lsp) for Windows x64 (MSVC). Technical delivery package for @loctree/loctree — do not install directly.",
"keywords": [
"loctree",
Expand Down
24 changes: 12 additions & 12 deletions distribution/tests/windows_bundle_test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -67,14 +67,14 @@ cp "$FAKE_RELEASE_DIR/${url##*/}" "$output"
SH
chmod +x "$TMP_ROOT/bin/curl"

archive_name="aicx-v0.12.3-x86_64-pc-windows-msvc-slim.zip"
archive_name="aicx-v0.12.5-x86_64-pc-windows-msvc-slim.zip"
python3 - "$TMP_ROOT/release-payload/$archive_name" <<'PY'
import sys
import zipfile

with zipfile.ZipFile(sys.argv[1], "w") as archive:
archive.writestr("aicx-v0.12.3/aicx.exe", "aicx test\n")
archive.writestr("aicx-v0.12.3/aicx-mcp.exe", "aicx-mcp test\n")
archive.writestr("aicx-v0.12.5/aicx.exe", "aicx test\n")
archive.writestr("aicx-v0.12.5/aicx-mcp.exe", "aicx-mcp test\n")
PY
if command -v shasum >/dev/null 2>&1; then
archive_sha=$(shasum -a 256 "$TMP_ROOT/release-payload/$archive_name" | awk '{print $1}')
Expand Down Expand Up @@ -112,32 +112,32 @@ SH
chmod +x "$TMP_ROOT/bin/tar"

asset() {
bash "$ROOT_DIR/distribution/build-bundle.sh" 0.14.3 \
--aicx-version 0.12.3 \
bash "$ROOT_DIR/distribution/build-bundle.sh" 0.14.4 \
--aicx-version 0.12.5 \
--no-sync \
--dry-run \
--print-aicx-asset "$1"
}

[[ "$(asset aarch64-apple-darwin)" == "aicx-v0.12.3-aarch64-apple-darwin-slim.zip" ]]
[[ "$(asset x86_64-unknown-linux-gnu)" == "aicx-v0.12.3-x86_64-linux-gnu-slim.tar.gz" ]]
[[ "$(asset x86_64-pc-windows-msvc)" == "aicx-v0.12.3-x86_64-pc-windows-msvc-slim.zip" ]]
[[ "$(asset aarch64-apple-darwin)" == "aicx-v0.12.5-aarch64-apple-darwin-slim.zip" ]]
[[ "$(asset x86_64-unknown-linux-gnu)" == "aicx-v0.12.5-x86_64-linux-gnu-slim.tar.gz" ]]
[[ "$(asset x86_64-pc-windows-msvc)" == "aicx-v0.12.5-x86_64-pc-windows-msvc-slim.zip" ]]

FAKE_RELEASE_DIR="$TMP_ROOT/release-payload" \
FAKE_ARCHIVE_SHA="$archive_sha" \
REAL_TAR="$real_tar" \
LOCTREE_GPG_KEY_ID="" \
PATH="$TMP_ROOT/bin:$PATH" bash "$ROOT_DIR/distribution/build-bundle.sh" 0.14.3 \
--aicx-version 0.12.3 \
PATH="$TMP_ROOT/bin:$PATH" bash "$ROOT_DIR/distribution/build-bundle.sh" 0.14.4 \
--aicx-version 0.12.5 \
--target x86_64-pc-windows-msvc \
--bundle-flavor full \
--bundle-suffix "" \
--dist-dir "$TMP_ROOT/dist" \
--work-dir "$TMP_ROOT/work" \
--no-sync

archive="$TMP_ROOT/dist/loctree-0.14.3-x86_64-pc-windows-msvc.tar.gz"
root="loctree-0.14.3-x86_64-pc-windows-msvc"
archive="$TMP_ROOT/dist/loctree-0.14.4-x86_64-pc-windows-msvc.tar.gz"
root="loctree-0.14.4-x86_64-pc-windows-msvc"
[[ -s "$archive" ]]
tar -tzf "$archive" > "$TMP_ROOT/contents.txt"
for bin in loct.exe loctree.exe loctree-mcp.exe loctree-lsp.exe aicx.exe aicx-mcp.exe; do
Expand Down
Loading
Loading