chore(release): v2.2.0#23
Merged
Merged
Conversation
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Cuts v2.2.0. Bumps
package.jsonandpackage-lock.json. No code changes.Included since v2.1.0
aictrlmarketplace so Claude Code can resolve plugin enablement. Pre-v2.2,npx @aictrl/pluginwrote the plugin to~/.claude/plugins/cache/<plugin>@aictrl/and flippedenabledPlugins["<plugin>@aictrl"] = true, but it never registered theaictrlmarketplace, never wrote a marketplace manifest, and never recorded the install. Claude Code printedPlugin "aictrl-<org>" not found in marketplace "aictrl"on every launch and skills/MCP failed to resolve. v2.2 switches to the canonical Claude Code layout, writes the marketplace manifest, registers inknown_marketplaces.jsonandinstalled_plugins.json, and cleans up the orphan pre-v2.2 cache directory on upgrade.~/.claude/settings.json, so a developer with access to two orgs (e.g.celliq+talentrix) saw both MCPs connect and both skill sets load in every Claude Code session everywhere. v2.2 writes enablement to project-scope<projectDir>/.claude/settings.local.json, auto-adds that file to project.gitignore, and migrates any pre-v2.2 user-scope entry for the installed org out of~/.claude/settings.json. Other orgs' entries are preserved — they migrate when the user re-runs the installer in those repos.orgSlug(rejects path-traversal sequences), atomic write (tmp + rename) for user-owned settings files to survive a SIGKILL/power-loss mid-write, POSIX-separator literal for the gitignore entry (Windows correctness),!Array.isArrayguards in all JSON-merge helpers, scope-preserving re-install ininstalled_plugins.json, and cross-file index-consistency regression test.Semver
Minor bump. Backward-compatible at the CLI level —
npx @aictrl/pluginis invoked the same way, but the on-disk effect (where files land, which Claude Code can now actually load) is different. The internalClaudePluginOptionstype changed shape (settingsFile→projectDir+userSettingsFile); there are no external consumers of the type.Test plan
npm test— 116/116 passnpm run build— clean tscgh release create v2.2.0to trigger.github/workflows/publish.yml→ npm publishnpx @aictrl/plugin@2.2.0end-to-end in a real org, confirm no "not found in marketplace" banner and only that org's MCP loads🤖 Generated with Claude Code