claude-multi 0.6.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -3
- package/dist/cli.js +14 -9
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,12 +5,24 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.6.1] - 2026-05-29
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
- Pinned Claude version updated from `2.1.153` to `2.1.156`. `isThirdPartyApiBroken()` now covers v2.1.154 through v2.1.155.
|
|
12
|
+
- Auto-updates re-enabled. `PROVIDER_COMMON_ENV` no longer injects `DISABLE_AUTOUPDATER`/`DISABLE_UPDATES`. `autoUpdates` set to `true` in instance state.
|
|
13
|
+
- `doctor fix` now reinstalls the pinned binary when its version differs from `COMPATIBLE_CLAUDE_VERSION`, not just when broken. Covers the upgrade path from the old v2.1.153 pin.
|
|
14
|
+
- Unknown CLI subcommands exit with an error instead of falling through to the Ink TUI.
|
|
15
|
+
- All version pinning and compatibility code tagged with `[SAFE PARK]` comments for easy discovery and reactivation.
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
- Blog post: "Claude Code v2.1.156 fixes the third-party provider breakage"
|
|
19
|
+
|
|
8
20
|
## [0.6.0] - 2026-05-29
|
|
9
21
|
|
|
10
22
|
### Added
|
|
11
|
-
- **`doctor fix` auto-installs pinned Claude binary**: when the compatible binary at `~/.claude-multi/bin` is missing or running an incompatible version, `doctor fix` now installs Claude Code v2.1.
|
|
12
|
-
- **Version verification on pinned binary**: `getPinnedBinaryVersion()` reads the installed version and triggers a reinstall if it's v2.1.154
|
|
13
|
-
- **`COMPATIBLE_CLAUDE_VERSION` constant** (`src/version.ts`): single source of truth for the pinned version (`2.1.
|
|
23
|
+
- **`doctor fix` auto-installs pinned Claude binary**: when the compatible binary at `~/.claude-multi/bin` is missing or running an incompatible version, `doctor fix` now installs Claude Code v2.1.156 (the version that fixed the 3rd-party API breakage from v2.1.154–v2.1.155) before fixing wrappers. Works from both CLI and TUI.
|
|
24
|
+
- **Version verification on pinned binary**: `getPinnedBinaryVersion()` reads the installed version and triggers a reinstall if it's v2.1.154–v2.1.155.
|
|
25
|
+
- **`COMPATIBLE_CLAUDE_VERSION` constant** (`src/version.ts`): single source of truth for the pinned version (`2.1.156`).
|
|
14
26
|
- **`PINNED_CLAUDE_BIN` in `src/paths.ts`**: shared path constant (previously duplicated in `wrapper.ts` and `health.ts`).
|
|
15
27
|
|
|
16
28
|
### Changed
|
package/dist/cli.js
CHANGED
|
@@ -7326,10 +7326,7 @@ function applyProviderTemplate(template, apiKey) {
|
|
|
7326
7326
|
}
|
|
7327
7327
|
var PROVIDER_COMMON_ENV, PROVIDER_TEMPLATES, API_KEY_PREFIXES, MIMO_TOKEN_REGIONS;
|
|
7328
7328
|
var init_templates = __esm(() => {
|
|
7329
|
-
PROVIDER_COMMON_ENV = {
|
|
7330
|
-
DISABLE_AUTOUPDATER: "1",
|
|
7331
|
-
DISABLE_UPDATES: "1"
|
|
7332
|
-
};
|
|
7329
|
+
PROVIDER_COMMON_ENV = {};
|
|
7333
7330
|
PROVIDER_TEMPLATES = {
|
|
7334
7331
|
glm: {
|
|
7335
7332
|
name: "glm",
|
|
@@ -8210,7 +8207,7 @@ async function initializeInstanceState(configDir) {
|
|
|
8210
8207
|
const state = {
|
|
8211
8208
|
numStartups: 1,
|
|
8212
8209
|
installMethod: "global",
|
|
8213
|
-
autoUpdates:
|
|
8210
|
+
autoUpdates: true,
|
|
8214
8211
|
hasSeenTasksHint: true,
|
|
8215
8212
|
hasCompletedOnboarding: true,
|
|
8216
8213
|
lastOnboardingVersion: "2.0.31",
|
|
@@ -10744,7 +10741,7 @@ function getCurrentVersion() {
|
|
|
10744
10741
|
}
|
|
10745
10742
|
}
|
|
10746
10743
|
function isThirdPartyApiBroken(version) {
|
|
10747
|
-
return import_semver.default.gte(version, "2.1.154");
|
|
10744
|
+
return import_semver.default.gte(version, "2.1.154") && import_semver.default.lt(version, "2.1.156");
|
|
10748
10745
|
}
|
|
10749
10746
|
function getPinnedBinaryVersion() {
|
|
10750
10747
|
const pkgJsonPath = join4(PINNED_BIN_DIR, "node_modules", "@anthropic-ai", "claude-code", "package.json");
|
|
@@ -10824,7 +10821,7 @@ async function updateClaudeCode() {
|
|
|
10824
10821
|
throw new ClaudeMultiError(ErrorCode.UPDATE_FAILED, `Failed to update @anthropic-ai/claude-code: ${err instanceof Error ? err.message : String(err)}`, { cause: err });
|
|
10825
10822
|
}
|
|
10826
10823
|
}
|
|
10827
|
-
var import_semver, COMPATIBLE_CLAUDE_VERSION = "2.1.
|
|
10824
|
+
var import_semver, COMPATIBLE_CLAUDE_VERSION = "2.1.156";
|
|
10828
10825
|
var init_version = __esm(() => {
|
|
10829
10826
|
init_errors();
|
|
10830
10827
|
init_paths();
|
|
@@ -59525,8 +59522,10 @@ program2.command("doctor").description("Diagnose and fix common issues").argumen
|
|
|
59525
59522
|
console.log(source_default.green(`✓ Installed pinned Claude v${COMPATIBLE_CLAUDE_VERSION2}`));
|
|
59526
59523
|
} else {
|
|
59527
59524
|
const pinnedVer = getPinnedBinaryVersion2();
|
|
59528
|
-
|
|
59529
|
-
|
|
59525
|
+
const needsReinstall = !pinnedVer || isThirdPartyApiBroken2(pinnedVer) || pinnedVer !== COMPATIBLE_CLAUDE_VERSION2;
|
|
59526
|
+
if (needsReinstall) {
|
|
59527
|
+
const reason = !pinnedVer ? "version unknown" : isThirdPartyApiBroken2(pinnedVer) ? "incompatible" : "outdated";
|
|
59528
|
+
console.log(source_default.yellow(`Pinned binary is ${pinnedVer ? `v${pinnedVer}` : reason}. Reinstalling v${COMPATIBLE_CLAUDE_VERSION2}...`));
|
|
59530
59529
|
installPinnedClaude2();
|
|
59531
59530
|
console.log(source_default.green(`✓ Reinstalled pinned Claude v${COMPATIBLE_CLAUDE_VERSION2}`));
|
|
59532
59531
|
}
|
|
@@ -60064,6 +60063,12 @@ async function handleMcpVerify(instanceName) {
|
|
|
60064
60063
|
}
|
|
60065
60064
|
program2.action(async () => {
|
|
60066
60065
|
skipGlobalUpdateCheck = true;
|
|
60066
|
+
const unknownArgs = program2.args.filter((a) => !a.startsWith("-"));
|
|
60067
|
+
if (unknownArgs.length > 0) {
|
|
60068
|
+
console.error(source_default.red(`✗ Unknown command: ${unknownArgs[0]}`));
|
|
60069
|
+
console.log(source_default.gray("Run 'claude-multi --help' for available commands."));
|
|
60070
|
+
exitWithCode(1);
|
|
60071
|
+
}
|
|
60067
60072
|
try {
|
|
60068
60073
|
const { render: render2 } = await init_build2().then(() => exports_build);
|
|
60069
60074
|
const React39 = await Promise.resolve().then(() => __toESM(require_react(), 1));
|