feat(cli)!: Phase 3 - full-cutover rename CLI binaries to loopover-* - #5728
Conversation
…/gittensory-mcp CLI binaries to loopover-* Phase 3 of the gittensory -> loopover rebrand (#5705): renames all three CLI executables and their backing bin/*.js files, full cutover per the epic's mandate (no dual-support aliases): - gittensory-miner -> loopover-miner (packages/gittensory-miner) - gittensory-miner-mcp -> loopover-miner-mcp (packages/gittensory-miner) - gittensory-mcp -> loopover-mcp (packages/gittensory-mcp) Updates every downstream reference: package.json bin fields, build scripts, --help/usage text and error messages, shell completion scripts, the Dockerfile ENTRYPOINT + its GITTENSORY_VERSION build ARG (now LOOPOVER_VERSION), CI publish-workflow smoke-test assertions, the deployment-docs-audit.js subcommand-claim regex, the miner/mcp package allowlist checkers, and all CLI-example prose across README.md, DEPLOYMENT.md, and packages/*/docs/*.md. Also fixes two real bugs surfaced while verifying this against the full test suite (not cosmetic renames, functional regressions the rename would otherwise have caused or left in place): - src/services/client-telemetry.ts's x-gittensory-mcp-{package,version, client,client-version} HTTP headers renamed to x-loopover-mcp-* on both the CLI (sender) and server (reader) sides -- fixing only one side would have silently broken MCP client telemetry ingestion. Also fixed clientNameFromPackage's hardcoded "gittensory-mcp" string fallback. - src/db/repositories.ts's summarizeMcpCompatibilityAdoption() had a legacy clientName match (`eq(clientName, "gittensory-mcp")` / `"gittensory-mcp-cli"`) used to select MCP-surfaced usage events that don't set surface="mcp" (e.g. /v1/local/branch-analysis, surface= "api"). Left un-updated, this would have silently excluded every correctly-renamed loopover-mcp-cli event from the MCP compatibility dashboard the moment the client-side rename shipped. BREAKING CHANGE: `gittensory-miner`, `gittensory-miner-mcp`, and `gittensory-mcp` no longer exist as installed binaries; use `loopover-miner`, `loopover-miner-mcp`, and `loopover-mcp`. No dual-read/alias, per the epic's full-cutover mandate. A global npm install/link of the old package names must be reinstalled.
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #5728 +/- ##
=======================================
Coverage 95.06% 95.06%
=======================================
Files 581 581
Lines 46169 46169
Branches 14811 14811
=======================================
+ Hits 43891 43892 +1
+ Misses 1517 1516 -1
Partials 761 761
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
|
Caution 🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥🟥 🛑 LoopOver review result - fixes requiredReview updated: 2026-07-14 09:06:49 UTC
🛑 Suggested Action - Manual Review Review summary Nits — 5 non-blocking
Why this is blocked
📋 Copy for AI agents — paste into your coding agentCI checks failing
Review context
Contributor next steps
Signal definitions
[BETA] Chat with GittensoryAsk Gittensory a question about this PR directly in a comment — grounded only in the same cached, public-safe facts shown above, never a new claim.
Full command reference: https://gittensory.aethereal.dev/docs/gittensory-commands Visual preview
Click any thumbnail to open the full-size screenshot. Before = production · After = this PR's preview deploy. 🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed 💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →. Checked by LoopOver, a quiet PR intelligence layer for OSS maintainers.
|
parseManageStatusArgs's "Usage: loopover-miner manage status [--json]" error path (a stray non-flag argument) had no covering test -- only the sibling "Unknown option" (flag-shaped) branch was exercised.
Summary
Phase 3 of the gittensory -> loopover rebrand epic (#5705): full-cutover rename of all three CLI executables, no dual-support aliases.
gittensory-miner->loopover-miner(packages/gittensory-miner)gittensory-miner-mcp->loopover-miner-mcp(packages/gittensory-miner)gittensory-mcp->loopover-mcp(packages/gittensory-mcp)Updates every downstream reference:
package.jsonbin fields, build scripts,--help/usage text and error messages, shell completion scripts, the DockerfileENTRYPOINT+ itsGITTENSORY_VERSIONbuild ARG (nowLOOPOVER_VERSION), CI publish-workflow smoke-test assertions,deployment-docs-audit.js's subcommand-claim regex, the miner/mcp package allowlist checkers, and all CLI-example prose acrossREADME.md,DEPLOYMENT.md, andpackages/*/docs/*.md.Two real bugs found and fixed while verifying against the full test suite
Not cosmetic renames — functional regressions the rename would otherwise have caused or left in place:
src/services/client-telemetry.ts'sx-gittensory-mcp-{package,version,client,client-version}HTTP headers renamed tox-loopover-mcp-*on both the CLI (sender) and server (reader) sides — fixing only one side would have silently broken MCP client telemetry ingestion. Also fixedclientNameFromPackage's hardcoded"gittensory-mcp"string fallback.src/db/repositories.ts'ssummarizeMcpCompatibilityAdoption()had a legacyclientNamematch (eq(clientName, "gittensory-mcp")/"gittensory-mcp-cli") used to select MCP-surfaced usage events that don't setsurface: "mcp"(e.g./v1/local/branch-analysis,surface: "api"). Left un-updated, this would have silently excluded every correctly-renamedloopover-mcp-clievent from the MCP compatibility dashboard the moment the client-side rename shipped — caught via a real integration-test count regression, not a stale-assertion update.BREAKING CHANGE:
gittensory-miner,gittensory-miner-mcp, andgittensory-mcpno longer exist as installed binaries; useloopover-miner,loopover-miner-mcp, andloopover-mcp. No dual-read/alias, per the epic's full-cutover mandate. A global npm install/link of the old package names must be reinstalled (npm install -g @loopover/miner @loopover/mcp).Test plan
npx vitest run— full suite: 835 test files / 16212 tests passnpm run typecheckcleannpm run docs:drift-check/npm run manifest:drift-check/npm run command-reference:checkcleannpm run miner:env-referenceregeneratednpx tsx scripts/write-ui-openapi.ts --checkclean