From be666e56557a5647670f408338a9b25d8aca4743 Mon Sep 17 00:00:00 2001 From: ModeIO Local Date: Sun, 26 Apr 2026 03:54:53 +0800 Subject: [PATCH] Release 0.2.1 --- package-lock.json | 4 +-- package.json | 2 +- packaging/npm/package.json | 2 +- packaging/npm/scripts/channel-ownership.js | 20 +++++++------ scripts/validate_npm_wrapper.sh | 33 ++++++++++++++++++++++ skill_manager/VERSION | 2 +- 6 files changed, 50 insertions(+), 13 deletions(-) diff --git a/package-lock.json b/package-lock.json index ccf2171..ce2b613 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "skill-manager", - "version": "0.2.0", + "version": "0.2.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "skill-manager", - "version": "0.2.0", + "version": "0.2.1", "dependencies": { "@dnd-kit/core": "^6.3.1", "@radix-ui/react-dialog": "^1.1.15", diff --git a/package.json b/package.json index b8fe99f..2de43a6 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "skill-manager", "private": true, - "version": "0.2.0", + "version": "0.2.1", "type": "module", "scripts": { "dev": "VITE_API_BASE=/api vite --host 127.0.0.1 --port 5173", diff --git a/packaging/npm/package.json b/packaging/npm/package.json index 32e6a1f..38a938e 100644 --- a/packaging/npm/package.json +++ b/packaging/npm/package.json @@ -1,6 +1,6 @@ { "name": "@mode-io/skill-manager", - "version": "0.2.0", + "version": "0.2.1", "description": "Public macOS installer wrapper for the Mode IO skill-manager native release artifact.", "license": "MIT", "private": false, diff --git a/packaging/npm/scripts/channel-ownership.js b/packaging/npm/scripts/channel-ownership.js index d368dd2..8cb192b 100644 --- a/packaging/npm/scripts/channel-ownership.js +++ b/packaging/npm/scripts/channel-ownership.js @@ -38,18 +38,27 @@ function packageRootPath() { return path.resolve(__dirname, ".."); } +function isNonEmptyDirectory(directory) { + try { + return fs.statSync(directory).isDirectory() && fs.readdirSync(directory).length > 0; + } catch { + return false; + } +} + function detectHomebrewInstall() { const prefixes = new Set(); const envPrefix = String(process.env.HOMEBREW_PREFIX || "").trim(); if (envPrefix) { prefixes.add(envPrefix); } - prefixes.add("/opt/homebrew"); - prefixes.add("/usr/local"); const brewPrefix = spawnSync("brew", ["--prefix"], { encoding: "utf8" }); if (brewPrefix.status === 0 && brewPrefix.stdout.trim()) { prefixes.add(brewPrefix.stdout.trim()); + } else { + prefixes.add("/opt/homebrew"); + prefixes.add("/usr/local"); } const brewList = spawnSync("brew", ["list", "--versions", "skill-manager"], { encoding: "utf8" }); @@ -57,11 +66,6 @@ function detectHomebrewInstall() { return true; } - const formulaPrefix = spawnSync("brew", ["--prefix", "skill-manager"], { encoding: "utf8" }); - if (formulaPrefix.status === 0 && formulaPrefix.stdout.trim()) { - return true; - } - for (const prefix of prefixes) { if (!prefix) { continue; @@ -69,7 +73,7 @@ function detectHomebrewInstall() { if (fs.existsSync(path.join(prefix, "opt", "skill-manager"))) { return true; } - if (fs.existsSync(path.join(prefix, "Cellar", "skill-manager"))) { + if (isNonEmptyDirectory(path.join(prefix, "Cellar", "skill-manager"))) { return true; } } diff --git a/scripts/validate_npm_wrapper.sh b/scripts/validate_npm_wrapper.sh index 90f5781..7642392 100755 --- a/scripts/validate_npm_wrapper.sh +++ b/scripts/validate_npm_wrapper.sh @@ -194,4 +194,37 @@ if [[ "$RUNTIME_CONFLICT_OUTPUT" != *"skill-manager is already installed via Hom exit 1 fi +TAPPED_BREW_ROOT="$TMP_DIR/tapped-homebrew" +TAPPED_BIN_DIR="$TMP_DIR/tapped-bin" +mkdir -p "$TAPPED_BREW_ROOT" "$TAPPED_BIN_DIR" +cat >"$TAPPED_BIN_DIR/brew" </dev/null + +TAPPED_VERSION_OUTPUT="$( + PATH="$TAPPED_BIN_DIR:$PATH" \ + "$TMP_DIR/tapped-global-prefix/bin/skill-manager" --version +)" +if [[ ! "$TAPPED_VERSION_OUTPUT" =~ ^skill-manager[[:space:]][0-9]+\.[0-9]+\.[0-9]+ ]]; then + echo "Tapped-but-uninstalled Homebrew case unexpectedly blocked npm wrapper: $TAPPED_VERSION_OUTPUT" >&2 + exit 1 +fi + "$TMP_DIR/node_modules/.bin/skill-manager" stop --state-dir "$TMP_DIR/runtime" >/dev/null diff --git a/skill_manager/VERSION b/skill_manager/VERSION index 0ea3a94..0c62199 100644 --- a/skill_manager/VERSION +++ b/skill_manager/VERSION @@ -1 +1 @@ -0.2.0 +0.2.1