From e3d01fc34132429bbbd0a03731f4ad5b843519ff Mon Sep 17 00:00:00 2001 From: delta-cloud-208e Date: Sun, 26 Apr 2026 10:06:33 +0000 Subject: [PATCH] feat(claude): bump latest=2.1.120 + verify ae2/ae3 markers in installer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - index.json latest: 2.1.119 → 2.1.120 (artifacts already published in releases/v2.1.120/sea/, manifest carries ae3 patched binary sha256 eb126100...) - uclaude_install.sh SEA verification expanded: now requires ae1 + ae2 + ae3 + bypass markers (was only ae1 + bypass). ae2 gates the /model picker for custom-prefixed models, ae3 gates Agent.model accepting gpt-5.5/glm-5.1 — both critical for the proxy workflow. After this: new machines doing curl ... uclaude_install.sh | sudo bash get v2.1.120 directly with all 9 patches; verification step catches any missing patch with explicit "missing: ae3" diagnostic. --- claude/releases/index.json | 9 ++++++++- claude/uclaude_install.sh | 17 ++++++++++++----- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/claude/releases/index.json b/claude/releases/index.json index 94819ce..68a3f66 100755 --- a/claude/releases/index.json +++ b/claude/releases/index.json @@ -1,6 +1,13 @@ { - "latest": "2.1.119", + "latest": "2.1.120", "releases": [ + { + "version": "2.1.120", + "date": "2026-04-26", + "patches": 9, + "status": "stable", + "install_type": "sea_binary" + }, { "version": "2.1.119", "date": "2026-04-24", diff --git a/claude/uclaude_install.sh b/claude/uclaude_install.sh index 017ec3a..2d43fda 100755 --- a/claude/uclaude_install.sh +++ b/claude/uclaude_install.sh @@ -216,14 +216,21 @@ if [ -n "$CLAUDE_BIN" ] && [ -f "$CLAUDE_BIN" ]; then fi ;; claude.exe|claude) - # SEA binary — grep -a treats binary as text + # SEA binary — grep -a treats binary as text. Three required + # markers that gate user-visible features: + # ae1: /model picker shows custom models from availableModels + # ae2: picker accepts non-"anthropic.*"-prefixed models + # ae3: Agent.model accepts gpt-5.5/glm-5.1 (not just sonnet/opus/haiku) sea_ok=true - grep -aq '/\*ae1_models_filter_patched' "$CLAUDE_BIN" 2>/dev/null || sea_ok=false - grep -aq '/\*bypass_permissions_prompt' "$CLAUDE_BIN" 2>/dev/null || sea_ok=false + missing="" + grep -aq '/\*ae1_models_filter_patched' "$CLAUDE_BIN" 2>/dev/null || { sea_ok=false; missing="$missing ae1"; } + grep -aq '/\*ae2_anthropic_unfilter' "$CLAUDE_BIN" 2>/dev/null || { sea_ok=false; missing="$missing ae2"; } + grep -aq '/\*ae3_subagent_model' "$CLAUDE_BIN" 2>/dev/null || { sea_ok=false; missing="$missing ae3"; } + grep -aq '/\*bypass_permissions_prompt' "$CLAUDE_BIN" 2>/dev/null || { sea_ok=false; missing="$missing bypass"; } if $sea_ok; then - echo " SEA binary: OK (ae1_models_filter + bypass_permissions markers)" + echo " SEA binary: OK (ae1 + ae2 + ae3 + bypass_permissions markers)" else - echo " SEA binary: ⚠ NOT fully patched ($CLAUDE_BIN — re-run uclaude_updater.py --force)" + echo " SEA binary: ⚠ NOT fully patched (missing:$missing) — re-run uclaude_updater.py --force" fi ;; *)