Make the plugins, CLI setup, MCP config and editor extensions work with any Diffinery instance #314
Intentwhat this change is meant to do
Diffinery is open source and people run their own instances, so every integration must reach the instance a person uses instead of the invite-only diffinery.com.
test-bot merged commit 417ed91 into main
Pull request successfully merged and closed
test-bot merged 417ed91 into main
Sign in to join the conversation.
Requested by Can · project thread
#What this changes
Diffinery is open source now, so the Claude Code and Codex plugins, the SessionStart hook, the CI mod, the CLI's setup, the MCP config and the editor extensions work with any instance, not only diffinery.com (still the default).
userConfig.url, defaulthttps://diffinery.com)..mcp.jsonuses${user_config.url}/mcp. The SessionStart hook recognises clones onDIFFINERY_URL, the setting (CLAUDE_PLUGIN_OPTION_URL), the CLI's saved URL or diffinery.com, and says when the CLI points elsewhere. diffinery-ci picks the instance the same way and sends a token only to the instance it belongs to (it used to send the CLI's token toDIFFINERY_URLwhatever that was). The skill and/pr-statusno longer assume diffinery.com. Both plugins get an icon, documentation and support URLs, and Codician Team as author (marketplace owner too).codex.mcp.json(diffinery.com). Tested with Codex 0.164: a user server nameddiffineryreplaces it./-/claude/<name>.zipfrom a self-hosted instance defaults the setting to that instance (docs/claude-plugins.ts, with a small zip reader inlib/archive.ts). diffinery.com serves the packed bytes unchanged.diffinery setup --url Xwrites the setting into Claude Code'spluginConfigs(for@inlinecopies and marketplace installs) and, when Codex is installed, adds[mcp_servers.diffinery]toconfig.toml. It doesn't usecodex mcp add, which starts an OAuth flow and waits on it. A clone of another host now gets a hint todiffinery login --url.install-editorleaves its address for the extension to offer once.#How it was tested
pnpm -r typecheckandpnpm -r testpass: server 1124, CLI 99 (plus new setup tests for pluginConfigs and Codex), VS Code 15, runner, git-core and workflow-yaml. There are new unit tests for the per-instance zip rewrite.claude plugin test plugins/diffinery-ci: 10/10, including the new instance and token choice.claude plugin validatepasses for the marketplace and both plugins (--profile directoryleaves only a privacy-policy URL warning)../gradlew test dist verifyPlugin. The verifier reports Compatible on IC 2024.3.6, IC 2025.2.4 and IU 2026.2.3.pnpm dev(http://localhost:8787):/-/claude/diffinery.zipserves"default": "http://localhost:8787", and the SHA-256 header matches.diffinery login --urlthendiffinery setupin a clean home wrotepluginConfigsand Codex'sconfig.toml.codex mcp listshowshttp://localhost:8787/mcp.claude mcp listshows the plugin's server at localhost Connected.claude -pgot the hook's note naming the local instance even with no CLI config, so the setting alone drove it, and the MCPwhoamitool answereddev.install.ps1was not run (no pwsh). The diffinery-ci band couldn't run inclaude -pin this container because hooks modules are switched off there; its logic is covered by the mod tests.#Checklist
pnpm -r typecheckandpnpm -r testpassapps/diffinery/docsapps/diffinery/migrations(none)🤖 Generated with Claude Code
https://claude.ai/code/session_01TdJysKcGD4ekSD5ZHbwBmJ