claude-multi 0.6.0 → 0.6.4

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.
Files changed (3) hide show
  1. package/CHANGELOG.md +73 -3
  2. package/dist/cli.js +4338 -3553
  3. package/package.json +12 -9
package/CHANGELOG.md CHANGED
@@ -5,12 +5,80 @@ 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.4] - 2026-05-29
9
+
10
+ ### Added
11
+ - Instance migration (0.6.3) syncs provider template env vars to existing instances. Detects the provider from `ANTHROPIC_BASE_URL` in `settings.json` and re-applies the latest template (model names, thinking tokens, output limits). Preserves API keys and user-added env vars.
12
+ - `detectProvider()` and `getProviderByBaseUrl()` in `templates.ts` match a base URL to a provider template name.
13
+ - `providerTemplate` field on the `Instance` type. New instances store it; migration backfills it for existing instances.
14
+
15
+ ### Blog
16
+ - Blog post: [v0.6.4: Existing Instances Now Auto-Sync Provider Template Updates](https://claude-multi.hmziq.xyz/blog/v064-provider-template-sync/)
17
+
18
+ ## [0.6.3] - 2026-05-29
19
+
20
+ ### Changed
21
+ - Instance migrations regenerate wrappers pointing to the globally installed `claude` binary (via `which claude`), not the pinned binary at `~/.claude-multi/bin`. Wrappers that already match the expected content are left untouched.
22
+ - `runMigration` and `createBackup` are synchronous now (had no `await` expressions).
23
+ - MiMo (pay-per-token and Token Plan) models bumped to `mimo-v2.5-pro[1m]` and `mimo-v2.5[1m]` (1M context window variants).
24
+ - Kimi opus model changed from `kimi-k2.6` to `kimi-k2.5`.
25
+ - Provider templates now include explicit thinking and output token limits:
26
+ - MiniMax: 32K thinking, 64K output
27
+ - DeepSeek: 32K thinking, 128K output
28
+ - MiMo (both plans): 128K output
29
+ - Kimi: 16K thinking, 64K output
30
+ - Qwen and Qwen Coding Plan: 16K thinking, 64K output
31
+
32
+ ### Added
33
+ - `getGlobalClaudePath()` and `tryGetGlobalClaudePath()` in `wrapper.ts` resolve the claude binary from the env override or PATH, skipping the pinned binary.
34
+ - Instance migration tests: fast-path skip on current-version instances, mixed instances (some current, some old), `.claude.json` updates when the wrapper file is missing, and a verification that regenerated wrappers contain the global claude path.
35
+
36
+ ### Fixed
37
+ - Health test compared `fixWrapperVersions` output against `generateWrapperScript()` (resolves via env override) instead of `buildWrapperScript(inst, PINNED_CLAUDE_BIN)` (what the function actually uses). Would break if `CLAUDE_MULTI_CLAUDE_PATH` was set.
38
+
39
+ ### Blog
40
+ - Blog post: [v0.6.3: Drop the Pinned Binary, Update Every Provider Template](https://claude-multi.hmziq.xyz/blog/v063-migration-and-provider-updates/)
41
+
42
+ ### Added
43
+ - Instances track the claude-multi version they were created with (`createdWithVersion`). New instances get the current version. Instances created before this field existed get `0.5` and show "before version tracking" in the UI.
44
+ - `doctor` and the TUI health screen report when instance migrations are pending or when an instance is running an older version.
45
+ - `doctor fix` shows which instances need migration and asks for confirmation before running.
46
+ - Version column added to `list`, `info`, and the Ink TUI instance cards and detail screens.
47
+
48
+ ### Changed
49
+ - `instanceMigrationVersion` in config now stores the actual package version rather than a separate numbering scheme.
50
+ - The legacy sentinel (`"0.5"`) is defined once as `LEGACY_INSTANCE_VERSION` and imported everywhere, instead of being hardcoded in multiple files.
51
+ - Wrapper script template exists in a single place (`buildWrapperScript` in `wrapper.ts`). Migration and health check both delegate to it instead of duplicating the template string.
52
+ - Instance migration only rewrites wrappers when the file content actually differs (version check + content diff), instead of unconditionally regenerating every wrapper.
53
+ - `fixWrapperVersions` uses the canonical template targeting the pinned binary explicitly, with a content-diff check to avoid unnecessary writes.
54
+
55
+ ### Fixed
56
+ - Removed broken `compareVersions` references from `version.test.ts`.
57
+ - `resolveClaudePath()` in `migration.ts` used `await` in a non-async function (TypeScript error). Removed — replaced by `generateWrapperScriptSafe` from `wrapper.ts`.
58
+ - Unused imports (`COMPATIBLE_CLAUDE_VERSION`, `installPinnedClaude`, `getPinnedBinaryVersion`, `isThirdPartyApiBroken`, `PINNED_CLAUDE_BIN`) removed from `migration.ts`.
59
+ - `config.ts` `loadConfig` backfill loop now handles `noUncheckedIndexedAccess` correctly (pre-existing TypeScript error).
60
+ - `createBackup` changed from async to sync (had no `await` expressions — pre-existing lint warning).
61
+ - Array `.sort()` / `.reverse()` calls in `migration.ts` and `config.ts` changed to `.toSorted()` / `.toReversed()` (pre-existing lint warnings).
62
+ - Duplicate `existsSync` import in `test/wrapper.test.ts` merged into single import.
63
+
64
+ ## [0.6.1] - 2026-05-29
65
+
66
+ ### Changed
67
+ - Pinned Claude version updated from `2.1.153` to `2.1.156`. `isThirdPartyApiBroken()` now covers v2.1.154 through v2.1.155.
68
+ - Auto-updates re-enabled. `PROVIDER_COMMON_ENV` no longer injects `DISABLE_AUTOUPDATER`/`DISABLE_UPDATES`. `autoUpdates` set to `true` in instance state.
69
+ - `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.
70
+ - Unknown CLI subcommands exit with an error instead of falling through to the Ink TUI.
71
+ - All version pinning and compatibility code tagged with `[SAFE PARK]` comments for easy discovery and reactivation.
72
+
73
+ ### Added
74
+ - Blog post: "Claude Code v2.1.156 fixes the third-party provider breakage"
75
+
8
76
  ## [0.6.0] - 2026-05-29
9
77
 
10
78
  ### 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.153 (the last version before 3rd-party API breakage) before fixing wrappers. Works from both CLI and TUI.
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.153`).
79
+ - **`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.
80
+ - **Version verification on pinned binary**: `getPinnedBinaryVersion()` reads the installed version and triggers a reinstall if it's v2.1.154–v2.1.155.
81
+ - **`COMPATIBLE_CLAUDE_VERSION` constant** (`src/version.ts`): single source of truth for the pinned version (`2.1.156`).
14
82
  - **`PINNED_CLAUDE_BIN` in `src/paths.ts`**: shared path constant (previously duplicated in `wrapper.ts` and `health.ts`).
15
83
 
16
84
  ### Changed
@@ -314,6 +382,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
314
382
  - Support for custom config and binary paths
315
383
  - Command-line interface built with Commander.js
316
384
 
385
+ [0.6.4]: https://github.com/hmziqrs/claude-multi/compare/v0.6.3...v0.6.4
386
+ [0.6.3]: https://github.com/hmziqrs/claude-multi/compare/v0.6.2...v0.6.3
317
387
  [0.5.5]: https://github.com/hmziqrs/claude-multi/compare/v0.5.1...v0.5.5
318
388
  [0.5.1]: https://github.com/hmziqrs/claude-multi/compare/v0.5.0...v0.5.1
319
389
  [0.5.0]: https://github.com/hmziqrs/claude-multi/compare/v0.4.4...v0.5.0