From 6468ae47035f6b9c38d604eaaac601b2cb487e58 Mon Sep 17 00:00:00 2001 From: div0-space Date: Sun, 23 Aug 2026 22:37:16 +0200 Subject: [PATCH 1/3] [codex/interactive] chore(release): prepare 0.14.4 Synchronize every shipped Loctree surface at 0.14.4 and select the corrective AICX 0.12.4 assets for combined bundles. Record the five-platform Windows repair evidence and keep the failed v0.14.3 tag immutable. Authored-By: codex --- .github/workflows/release-bundles.yml | 4 +- CHANGELOG.md | 23 +++++++---- Cargo.lock | 12 +++--- Cargo.toml | 8 ++-- Makefile | 4 +- distribution/README.md | 2 +- distribution/build-bundle.sh | 6 +-- distribution/npm/loct/package.json | 10 ++--- .../darwin-arm64/package.json | 2 +- .../platform-packages/darwin-x64/package.json | 2 +- .../linux-x64-gnu/package.json | 2 +- .../win32-x64-msvc/package.json | 2 +- distribution/tests/windows_bundle_test.sh | 24 +++++------ .../2026-08-23-windows-release-research.md | 41 +++++++++++++------ docs/release/README.md | 2 +- editors/jetbrains/README.md | 2 +- editors/jetbrains/gradle.properties | 2 +- .../messages/LoctreeBundle.properties | 2 +- editors/vscode/package-lock.json | 4 +- editors/vscode/package.json | 2 +- loctree-rs/src/lib.rs | 2 +- public_dist/install.sh | 2 +- 22 files changed, 90 insertions(+), 70 deletions(-) diff --git a/.github/workflows/release-bundles.yml b/.github/workflows/release-bundles.yml index 000c8fbc..a83ccc6d 100644 --- a/.github/workflows/release-bundles.yml +++ b/.github/workflows/release-bundles.yml @@ -10,7 +10,7 @@ on: aicx_version: description: "AICX release version to include" required: false - default: "0.12.3" + default: "0.12.4" type: string push: tags: @@ -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.4}" if [[ ! "$VERSION" =~ ^[0-9]+[.][0-9]+[.][0-9]+$ ]]; then echo "version must look like x.y.z" >&2 diff --git a/CHANGELOG.md b/CHANGELOG.md index dcd8d53f..c42ca9a8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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.4 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 diff --git a/Cargo.lock b/Cargo.lock index b0d48f75..f46c3511 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2031,7 +2031,7 @@ dependencies = [ [[package]] name = "loctree" -version = "0.14.3" +version = "0.14.4" dependencies = [ "aicx", "anyhow", @@ -2089,7 +2089,7 @@ dependencies = [ [[package]] name = "loctree-ast" -version = "0.14.3" +version = "0.14.4" dependencies = [ "thiserror 2.0.18", "tree-sitter", @@ -2100,7 +2100,7 @@ dependencies = [ [[package]] name = "loctree-lsp" -version = "0.14.3" +version = "0.14.4" dependencies = [ "anyhow", "base64", @@ -2129,7 +2129,7 @@ dependencies = [ [[package]] name = "loctree-mcp" -version = "0.14.3" +version = "0.14.4" dependencies = [ "anyhow", "argon2", @@ -3321,7 +3321,7 @@ checksum = "dc897dd8d9e8bd1ed8cdad82b5966c3e0ecae09fb1907d58efaa013543185d0a" [[package]] name = "report-leptos" -version = "0.14.3" +version = "0.14.4" dependencies = [ "leptos", "pretty_assertions", @@ -3331,7 +3331,7 @@ dependencies = [ [[package]] name = "report-wasm" -version = "0.14.3" +version = "0.14.4" dependencies = [ "console_error_panic_hook", "js-sys", diff --git a/Cargo.toml b/Cargo.toml index c1a6a080..d8d8fd28 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -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" @@ -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] diff --git a/Makefile b/Makefile index f934b7be..f7391699 100644 --- a/Makefile +++ b/Makefile @@ -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.4] [BUNDLE_TARGET=aarch64-apple-darwin|x86_64-unknown-linux-gnu|x86_64-pc-windows-msvc]" >&2; \ exit 1; \ fi @set --; \ @@ -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.4 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' diff --git a/distribution/README.md b/distribution/README.md index c922b3d6..98834586 100644 --- a/distribution/README.md +++ b/distribution/README.md @@ -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.4 ``` The same path is used by the GitHub Actions workflow diff --git a/distribution/build-bundle.sh b/distribution/build-bundle.sh index 3d74cf3f..e40380ec 100755 --- a/distribution/build-bundle.sh +++ b/distribution/build-bundle.sh @@ -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.4" # Print the full CLI contract on --help or when no version argument is given. usage() { @@ -34,7 +34,7 @@ Usage: Options: --aicx-root Developer override: build AICX from source instead of the canonical GitHub release asset. - --aicx-version AICX release version. Default: 0.12.3. + --aicx-version AICX release version. Default: 0.12.4. --aicx-tag AICX release tag. Default: v. --aicx-repo AICX GitHub repo. Default: Loctree/aicx. --loct-io-root Root containing scripts/sync_releases.py. @@ -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.4 Developer override mode uses: make -C release-binaries STAGING_DIR= TARGET= diff --git a/distribution/npm/loct/package.json b/distribution/npm/loct/package.json index c942f2c2..4c57ff94 100644 --- a/distribution/npm/loct/package.json +++ b/distribution/npm/loct/package.json @@ -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", @@ -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" } } diff --git a/distribution/npm/loct/platform-packages/darwin-arm64/package.json b/distribution/npm/loct/platform-packages/darwin-arm64/package.json index 9868a7f2..0f560891 100644 --- a/distribution/npm/loct/platform-packages/darwin-arm64/package.json +++ b/distribution/npm/loct/platform-packages/darwin-arm64/package.json @@ -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", diff --git a/distribution/npm/loct/platform-packages/darwin-x64/package.json b/distribution/npm/loct/platform-packages/darwin-x64/package.json index f57ee064..79f6a27d 100644 --- a/distribution/npm/loct/platform-packages/darwin-x64/package.json +++ b/distribution/npm/loct/platform-packages/darwin-x64/package.json @@ -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", diff --git a/distribution/npm/loct/platform-packages/linux-x64-gnu/package.json b/distribution/npm/loct/platform-packages/linux-x64-gnu/package.json index 2f5f9b2b..5a52ce89 100644 --- a/distribution/npm/loct/platform-packages/linux-x64-gnu/package.json +++ b/distribution/npm/loct/platform-packages/linux-x64-gnu/package.json @@ -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", diff --git a/distribution/npm/loct/platform-packages/win32-x64-msvc/package.json b/distribution/npm/loct/platform-packages/win32-x64-msvc/package.json index d5646a97..693f49ab 100644 --- a/distribution/npm/loct/platform-packages/win32-x64-msvc/package.json +++ b/distribution/npm/loct/platform-packages/win32-x64-msvc/package.json @@ -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", diff --git a/distribution/tests/windows_bundle_test.sh b/distribution/tests/windows_bundle_test.sh index 268f50ad..2e51d3ee 100755 --- a/distribution/tests/windows_bundle_test.sh +++ b/distribution/tests/windows_bundle_test.sh @@ -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.4-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.4/aicx.exe", "aicx test\n") + archive.writestr("aicx-v0.12.4/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}') @@ -112,23 +112,23 @@ 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.4 \ --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.4-aarch64-apple-darwin-slim.zip" ]] +[[ "$(asset x86_64-unknown-linux-gnu)" == "aicx-v0.12.4-x86_64-linux-gnu-slim.tar.gz" ]] +[[ "$(asset x86_64-pc-windows-msvc)" == "aicx-v0.12.4-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.4 \ --target x86_64-pc-windows-msvc \ --bundle-flavor full \ --bundle-suffix "" \ @@ -136,8 +136,8 @@ PATH="$TMP_ROOT/bin:$PATH" bash "$ROOT_DIR/distribution/build-bundle.sh" 0.14.3 --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 diff --git a/docs/release/2026-08-23-windows-release-research.md b/docs/release/2026-08-23-windows-release-research.md index 1d884279..2033877a 100644 --- a/docs/release/2026-08-23-windows-release-research.md +++ b/docs/release/2026-08-23-windows-release-research.md @@ -1,8 +1,9 @@ # Windows-inclusive release research log — 2026-08-23 -Status: in progress. This document records the release evidence before the -`v0.14.3` tag is created. Runtime and registry results will be added after the -tag-driven workflows finish. +Status: corrective releases in progress. The immutable `v0.14.3` tag exposed +Windows release-contract failures after four other targets passed. The fixes +are merged to public `main`; AICX `0.12.4` and Loctree `0.14.4` preserve the +failed-tag provenance instead of rewriting it. ## Research question @@ -101,17 +102,16 @@ and a bundled archive. The branch was preserved for archaeology, but PR #15 was closed and will not be deployed. Site advancement will be rebuilt as a narrow clean-main change after release assets exist. -## Remaining proof before tag and publish +## Remaining proof before corrective publish -1. Green AICX same-SHA packaging gate and signed 0.12.3 assets on macOS arm64, - Linux x64 GNU, and Windows x64 MSVC. -2. Merge Loctree PR #69 after all public checks are green, then verify the - merged `main` is exactly the commit used for the tag. -3. Green tag-driven Loctree bundles, Windows smoke, npm cold installs, and - checksum/signature verification. -4. Public installer and release registry advancement through a narrow - deprivatized `loctree-com` PR and the VM deployment contract. -5. Real client verification on Windows plus macOS and Debian/Linux probes. +1. Merge the synchronized AICX 0.12.4 release PR, sign the merged-main tag, + then verify GitHub Release and npm cold installs on all three OSes. +2. Merge the synchronized Loctree 0.14.4 release PR with AICX 0.12.4 as its + bundle default, sign the merged-main tag, and prove all five bundles. +3. Advance the public installer and release registry through the merged, + deprivatized `loctree-com` VM deployment contract. +4. Re-run real client verification on Windows plus macOS and Debian/Linux + against the final corrective versions. ## npm first-publish bootstrap finding @@ -197,3 +197,18 @@ binaries as `0.12.3+g8243654a` with exit 0. The exact temporary directory was then removed; global npm and Cargo installations were untouched. Because npm versions are immutable, this repair will ship as AICX 0.12.4 rather than overwriting 0.12.3. + +## Merged repair proof + +Loctree branch run `32662090853` at `095bd210eb0475068d6ca616963c38c02d0c3282` +completed successfully on macOS arm64/x64, Linux GNU/musl, and Windows MSVC. +The Windows job passed archive construction, content verification, all six +version probes, committed-fixture scan, raw LSP staging, and artifact upload. +PR #70 then merged through protected checks as `ca1fea39d431ae6c50d80ba49e7379c67ce273cc`. + +AICX PR #58 passed the complete hosted matrix on macOS, Linux, and Windows, +including default and native-GGUF tests, then merged as +`050e8244c3c4bf2b767ce4859ba74c7476845ffb`. Its separate 0.12.4 release PR +contains only synchronized Cargo, lockfile, npm, changelog, and documentation +surfaces; the Loctree 0.14.4 release branch selects AICX 0.12.4 as the canonical +combined-bundle input. diff --git a/docs/release/README.md b/docs/release/README.md index 7fb73a39..02915bfd 100644 --- a/docs/release/README.md +++ b/docs/release/README.md @@ -204,7 +204,7 @@ this one — without it the script aborts on a missing `../loct-io/scripts/sync_releases.py`. Override the location with `LOCT_IO_ROOT=/path/to/loct-io`. -Bundles embed AICX release binaries (default `AICX_VERSION=0.12.3`) downloaded +Bundles embed AICX release binaries (default `AICX_VERSION=0.12.4`) downloaded from `Loctree/aicx` releases and checksum-verified. Smoke the staged binaries: diff --git a/editors/jetbrains/README.md b/editors/jetbrains/README.md index b2e9ae28..f29bbd28 100644 --- a/editors/jetbrains/README.md +++ b/editors/jetbrains/README.md @@ -155,7 +155,7 @@ Settings ▸ **Tools ▸ Loctree** (mirrors the VS Code configuration): | `showStatusBar` | `true` | Show the status bar widget. | | `autoDownload` | `true` | Download `loctree-lsp` when not found locally. | | `downloadBaseUrl` | `https://github.com/Loctree/loctree-release` | Override the GitHub repo for downloads. | -| `downloadTag` | *(empty)* | Release tag (e.g. `v0.14.3`). Empty pins to the plugin's own version; `latest` is an explicit opt-in. | +| `downloadTag` | *(empty)* | Release tag (e.g. `v0.14.4`). Empty pins to the plugin's own version; `latest` is an explicit opt-in. | | `diagnosticSeverity` | `WARNING` | Severity for dead-export diagnostics. | ## Build & test diff --git a/editors/jetbrains/gradle.properties b/editors/jetbrains/gradle.properties index 2c8511f8..8189a54a 100644 --- a/editors/jetbrains/gradle.properties +++ b/editors/jetbrains/gradle.properties @@ -4,7 +4,7 @@ # Plugin coordinates pluginGroup = io.loct.intellij -pluginVersion = 0.14.3 +pluginVersion = 0.14.4 # Plugin id must stay stable across releases (Marketplace identity). pluginId = io.loct.loctree diff --git a/editors/jetbrains/src/main/resources/messages/LoctreeBundle.properties b/editors/jetbrains/src/main/resources/messages/LoctreeBundle.properties index e8899eab..ca3500f9 100644 --- a/editors/jetbrains/src/main/resources/messages/LoctreeBundle.properties +++ b/editors/jetbrains/src/main/resources/messages/LoctreeBundle.properties @@ -14,7 +14,7 @@ settings.autoDownload=Automatically Download Loctree-LSP When No Cached Binary I settings.downloadBaseUrl.label=Download Base URL: settings.downloadBaseUrl.comment=Override the GitHub repo URL used for Loctree-LSP downloads (e.g. https://github.com/Loctree/loctree-release). settings.downloadTag.label=Release Tag: -settings.downloadTag.comment=Release tag to download (e.g. v0.14.3). Leave empty to pin to this plugin's version. Use 'latest' to opt in to the newest release. +settings.downloadTag.comment=Release tag to download (e.g. v0.14.4). Leave empty to pin to this plugin's version. Use 'latest' to opt in to the newest release. settings.diagnosticSeverity.label=Diagnostic Severity: settings.section.runtime=Runtime settings.section.behavior=Behavior diff --git a/editors/vscode/package-lock.json b/editors/vscode/package-lock.json index cf06fbf9..468612fb 100644 --- a/editors/vscode/package-lock.json +++ b/editors/vscode/package-lock.json @@ -1,12 +1,12 @@ { "name": "loctree", - "version": "0.14.3", + "version": "0.14.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "loctree", - "version": "0.14.3", + "version": "0.14.4", "license": "MIT", "dependencies": { "vscode-languageclient": "^9.0.1" diff --git a/editors/vscode/package.json b/editors/vscode/package.json index 79b49d17..8b62716d 100644 --- a/editors/vscode/package.json +++ b/editors/vscode/package.json @@ -2,7 +2,7 @@ "name": "loctree", "displayName": "Loctree", "description": "One-shot full repository context for AI agents: literal occurrences, symbol bodies, context packs, and blast-radius navigation powered by loctree", - "version": "0.14.3", + "version": "0.14.4", "publisher": "libraxis", "license": "MIT", "repository": { diff --git a/loctree-rs/src/lib.rs b/loctree-rs/src/lib.rs index df5b0579..c062eab3 100644 --- a/loctree-rs/src/lib.rs +++ b/loctree-rs/src/lib.rs @@ -68,7 +68,7 @@ //! exist for backward compatibility, but new non-CLI code should not depend on //! them. -#![doc(html_root_url = "https://docs.rs/loctree/0.14.3")] +#![doc(html_root_url = "https://docs.rs/loctree/0.14.4")] #![doc(html_favicon_url = "https://loct.io/assets/loctree-logo.png")] #![doc(html_logo_url = "https://loct.io/assets/loctree-logo.png")] diff --git a/public_dist/install.sh b/public_dist/install.sh index eeefcbd5..e10022a7 100644 --- a/public_dist/install.sh +++ b/public_dist/install.sh @@ -47,7 +47,7 @@ umask 022 # Keep this default in lockstep with [workspace.package] version in Cargo.toml. # `scripts/sync-version.sh` updates it and `make version-assert` enforces it. -VERSION="${LOCTREE_VERSION:-0.14.3}" +VERSION="${LOCTREE_VERSION:-0.14.4}" INSTALL_DIR="${INSTALL_DIR:-"$HOME/.local/bin"}" CARGO_HOME="${CARGO_HOME:-"$HOME/.cargo"}" CARGO_BIN="$CARGO_HOME/bin" From 3e6e090152c0db904048b6b5d2673990a5ed5112 Mon Sep 17 00:00:00 2001 From: div0-space Date: Mon, 24 Aug 2026 01:12:36 +0200 Subject: [PATCH 2/3] [codex/interactive] chore(release): select AICX 0.12.5 Advance the Loctree 0.14.4 combined-bundle contract from the failed immutable AICX 0.12.4 tag to the verified 0.12.5 release. Keep workflow, Make, docs, tests, and the research ledger aligned with the public Windows, npm, and real-host evidence. Authored-By: codex session_id: 01a02e76-59c6-70b1-b8c0-a032a6a28796 timestamp: 2026_0824_0112_CEST runtime: vibecrafted --- .github/workflows/release-bundles.yml | 4 +- CHANGELOG.md | 2 +- Makefile | 4 +- distribution/README.md | 2 +- distribution/build-bundle.sh | 6 +-- distribution/tests/windows_bundle_test.sh | 16 +++---- .../2026-08-23-windows-release-research.md | 46 +++++++++++++++---- docs/release/README.md | 2 +- 8 files changed, 54 insertions(+), 28 deletions(-) diff --git a/.github/workflows/release-bundles.yml b/.github/workflows/release-bundles.yml index a83ccc6d..a22bf253 100644 --- a/.github/workflows/release-bundles.yml +++ b/.github/workflows/release-bundles.yml @@ -10,7 +10,7 @@ on: aicx_version: description: "AICX release version to include" required: false - default: "0.12.4" + default: "0.12.5" type: string push: tags: @@ -52,7 +52,7 @@ jobs: else VERSION="${REF_NAME#v}" fi - AICX_VERSION="${INPUT_AICX_VERSION:-0.12.4}" + 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 diff --git a/CHANGELOG.md b/CHANGELOG.md index c42ca9a8..b227b3e2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,7 @@ The format is based on Keep a Changelog, and this project adheres to Semantic Ve ### Changed -- Combined bundles now default to the corrective AICX 0.12.4 release across +- Combined bundles now default to the corrective AICX 0.12.5 release across local build tooling, tag workflows, tests, and operator documentation. ### Fixed diff --git a/Makefile b/Makefile index f7391699..027078ac 100644 --- a/Makefile +++ b/Makefile @@ -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.4 [AICX_VERSION=0.12.4] [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 --; \ @@ -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.4 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' diff --git a/distribution/README.md b/distribution/README.md index 98834586..126a9945 100644 --- a/distribution/README.md +++ b/distribution/README.md @@ -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.4 AICX_VERSION=0.12.4 +make release-bundles VERSION=0.14.4 AICX_VERSION=0.12.5 ``` The same path is used by the GitHub Actions workflow diff --git a/distribution/build-bundle.sh b/distribution/build-bundle.sh index e40380ec..a306cd82 100755 --- a/distribution/build-bundle.sh +++ b/distribution/build-bundle.sh @@ -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.4" +AICX_VERSION_DEFAULT="0.12.5" # Print the full CLI contract on --help or when no version argument is given. usage() { @@ -34,7 +34,7 @@ Usage: Options: --aicx-root Developer override: build AICX from source instead of the canonical GitHub release asset. - --aicx-version AICX release version. Default: 0.12.4. + --aicx-version AICX release version. Default: 0.12.5. --aicx-tag AICX release tag. Default: v. --aicx-repo AICX GitHub repo. Default: Loctree/aicx. --loct-io-root Root containing scripts/sync_releases.py. @@ -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.4 + https://github.com/Loctree/aicx/releases/tag/v0.12.5 Developer override mode uses: make -C release-binaries STAGING_DIR= TARGET= diff --git a/distribution/tests/windows_bundle_test.sh b/distribution/tests/windows_bundle_test.sh index 2e51d3ee..28a23f6a 100755 --- a/distribution/tests/windows_bundle_test.sh +++ b/distribution/tests/windows_bundle_test.sh @@ -67,14 +67,14 @@ cp "$FAKE_RELEASE_DIR/${url##*/}" "$output" SH chmod +x "$TMP_ROOT/bin/curl" -archive_name="aicx-v0.12.4-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.4/aicx.exe", "aicx test\n") - archive.writestr("aicx-v0.12.4/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}') @@ -113,22 +113,22 @@ chmod +x "$TMP_ROOT/bin/tar" asset() { bash "$ROOT_DIR/distribution/build-bundle.sh" 0.14.4 \ - --aicx-version 0.12.4 \ + --aicx-version 0.12.5 \ --no-sync \ --dry-run \ --print-aicx-asset "$1" } -[[ "$(asset aarch64-apple-darwin)" == "aicx-v0.12.4-aarch64-apple-darwin-slim.zip" ]] -[[ "$(asset x86_64-unknown-linux-gnu)" == "aicx-v0.12.4-x86_64-linux-gnu-slim.tar.gz" ]] -[[ "$(asset x86_64-pc-windows-msvc)" == "aicx-v0.12.4-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.4 \ - --aicx-version 0.12.4 \ + --aicx-version 0.12.5 \ --target x86_64-pc-windows-msvc \ --bundle-flavor full \ --bundle-suffix "" \ diff --git a/docs/release/2026-08-23-windows-release-research.md b/docs/release/2026-08-23-windows-release-research.md index 2033877a..2bcbe251 100644 --- a/docs/release/2026-08-23-windows-release-research.md +++ b/docs/release/2026-08-23-windows-release-research.md @@ -2,7 +2,7 @@ Status: corrective releases in progress. The immutable `v0.14.3` tag exposed Windows release-contract failures after four other targets passed. The fixes -are merged to public `main`; AICX `0.12.4` and Loctree `0.14.4` preserve the +are merged to public `main`; AICX `0.12.5` and Loctree `0.14.4` preserve the failed-tag provenance instead of rewriting it. ## Research question @@ -104,9 +104,10 @@ narrow clean-main change after release assets exist. ## Remaining proof before corrective publish -1. Merge the synchronized AICX 0.12.4 release PR, sign the merged-main tag, - then verify GitHub Release and npm cold installs on all three OSes. -2. Merge the synchronized Loctree 0.14.4 release PR with AICX 0.12.4 as its +1. AICX 0.12.5 is complete: signed merged-main release, GitHub assets, npm + packages, hosted cold installs on all three OSes, and a real SSH Windows + cold install all passed. +2. Merge the synchronized Loctree 0.14.4 release PR with AICX 0.12.5 as its bundle default, sign the merged-main tag, and prove all five bundles. 3. Advance the public installer and release registry through the merged, deprivatized `loctree-com` VM deployment contract. @@ -195,8 +196,9 @@ the changed installer into an isolated directory on the real SSH Windows host, downloaded and checksum-verified the public 0.12.3 ZIP, and ran both installed binaries as `0.12.3+g8243654a` with exit 0. The exact temporary directory was then removed; global npm and Cargo installations were untouched. Because npm -versions are immutable, this repair will ship as AICX 0.12.4 rather than -overwriting 0.12.3. +versions are immutable, this repair was first cut as AICX 0.12.4 rather than +overwriting 0.12.3. The 0.12.4 tag later failed its signed Windows build and +was superseded by the immutable corrective 0.12.5 release described below. ## Merged repair proof @@ -208,7 +210,31 @@ PR #70 then merged through protected checks as `ca1fea39d431ae6c50d80ba49e7379c6 AICX PR #58 passed the complete hosted matrix on macOS, Linux, and Windows, including default and native-GGUF tests, then merged as -`050e8244c3c4bf2b767ce4859ba74c7476845ffb`. Its separate 0.12.4 release PR -contains only synchronized Cargo, lockfile, npm, changelog, and documentation -surfaces; the Loctree 0.14.4 release branch selects AICX 0.12.4 as the canonical -combined-bundle input. +`050e8244c3c4bf2b767ce4859ba74c7476845ffb`. + +## AICX corrective release proof + +The signed AICX `v0.12.4` run `32665708444` passed exact-tag verification, +macOS signing/notarization, and the Linux GPG bundle, but the serialized Windows +runner exhausted memory in the final single-process full-LTO `rustc` link. +Publish remained fail-closed. PR #60 keeps `opt-level=3` and stripping, disables +cross-crate LTO only for the low-memory signed Windows target, and adds a +`make version-check` contract covering serialization, LTO, and the LLVM-free +MSVC feature set. It merged as +`ced57997dd97a2b08960f35e3a657d7b0c49a200`. + +The signed `v0.12.5` run `32669780693` then completed exact-tag verification, +macOS codesign/notary, Linux GPG + Debian packaging, Windows MSVC ZIP build, +all archive smokes, checksums, detached signatures, and GitHub Release publish. +Independent download verification passed every checksum and every GPG +signature; public macOS binaries reported `0.12.5+gced57997`. + +npm run `32671741799` published `@loctree/aicx@0.12.5` plus all three platform +packages and passed empty-prefix cold installs on hosted macOS, Ubuntu, and +Windows. A separate real `ssh windows` install ran under a one-shot scheduled +task because that host limits individual SSH commands to about 30 seconds. It +returned npm exit 0 and both `aicx` and `aicx-mcp` as +`0.12.5+gced57997`; its isolated temp directory, task, script, result, and logs +were all removed. The mandatory AICX deprivatize pass reported no unambiguous +PII or secret leaks. Loctree 0.14.4 therefore selects AICX 0.12.5 as its +canonical combined-bundle input. diff --git a/docs/release/README.md b/docs/release/README.md index 02915bfd..63df57bf 100644 --- a/docs/release/README.md +++ b/docs/release/README.md @@ -204,7 +204,7 @@ this one — without it the script aborts on a missing `../loct-io/scripts/sync_releases.py`. Override the location with `LOCT_IO_ROOT=/path/to/loct-io`. -Bundles embed AICX release binaries (default `AICX_VERSION=0.12.4`) downloaded +Bundles embed AICX release binaries (default `AICX_VERSION=0.12.5`) downloaded from `Loctree/aicx` releases and checksum-verified. Smoke the staged binaries: From dd98bad7a9e837c2b1c39f662343a68794b490bf Mon Sep 17 00:00:00 2001 From: codex Date: Mon, 24 Aug 2026 01:41:29 +0200 Subject: [PATCH 3/3] [codex/interactive] docs(release): record five-platform rehearsal --- .../2026-08-23-windows-release-research.md | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/docs/release/2026-08-23-windows-release-research.md b/docs/release/2026-08-23-windows-release-research.md index 2bcbe251..6e085d2b 100644 --- a/docs/release/2026-08-23-windows-release-research.md +++ b/docs/release/2026-08-23-windows-release-research.md @@ -107,8 +107,9 @@ narrow clean-main change after release assets exist. 1. AICX 0.12.5 is complete: signed merged-main release, GitHub assets, npm packages, hosted cold installs on all three OSes, and a real SSH Windows cold install all passed. -2. Merge the synchronized Loctree 0.14.4 release PR with AICX 0.12.5 as its - bundle default, sign the merged-main tag, and prove all five bundles. +2. The synchronized Loctree 0.14.4 branch rehearsal with AICX 0.12.5 passed all + five bundles. Merge the release PR, sign the exact merged-main tag, and + repeat the five-platform proof on the immutable tag before publication. 3. Advance the public installer and release registry through the merged, deprivatized `loctree-com` VM deployment contract. 4. Re-run real client verification on Windows plus macOS and Debian/Linux @@ -238,3 +239,23 @@ returned npm exit 0 and both `aicx` and `aicx-mcp` as were all removed. The mandatory AICX deprivatize pass reported no unambiguous PII or secret leaks. Loctree 0.14.4 therefore selects AICX 0.12.5 as its canonical combined-bundle input. + +## Final Loctree branch rehearsal + +Workflow-dispatch run `32672964365` completed successfully at exact release +head `3e6e090152c0db904048b6b5d2673990a5ed5112`. Input verification and all five +bundle jobs passed: macOS arm64/x64, Linux GNU/musl, and Windows MSVC. The +publish job was correctly skipped because this was a branch rehearsal rather +than an immutable `v*` tag push. + +The Debian 12 musl smoke reported the extracted `loct` executable as statically +linked, ran `loct 0.14.4+g3e6e0901`, and scanned the one-file committed Git +fixture successfully without installing Git in the container. This directly +closes the original v0.14.2 `no git repository at '/fixture'` failure. + +The hosted Windows job ran all six bundled executables from the archive: +Loctree `0.14.4+g3e6e0901` for `loct`, `loctree`, `loctree-mcp`, and +`loctree-lsp`, plus `aicx` and `aicx-mcp` at `0.12.5+gced57997`. Its committed +Git fixture scan completed with `Status: OK`, and the raw +`loctree-lsp-windows-x64.exe` asset plus checksum uploaded successfully. The +immutable tag run must repeat this proof before any publish button is used.