Skip to content

feat(packages): rename npm workspace packages to @jsonbored/loopover-*#5391

Closed
JSONbored wants to merge 1 commit into
mainfrom
loopover/npm-packages
Closed

feat(packages): rename npm workspace packages to @jsonbored/loopover-*#5391
JSONbored wants to merge 1 commit into
mainfrom
loopover/npm-packages

Conversation

@JSONbored

Copy link
Copy Markdown
Owner

Summary

Renames the name field (and brand-prose in description/keywords) for all 6 npm workspace packages plus the standalone review-enrichment service:

Old New
@jsonbored/gittensory-engine @jsonbored/loopover-engine
@jsonbored/gittensory-mcp @jsonbored/loopover-mcp
@jsonbored/gittensory-miner @jsonbored/loopover-miner
@jsonbored/gittensory-ui-kit @jsonbored/loopover-ui-kit
@jsonbored/gittensory-ui @jsonbored/loopover-ui
@jsonbored/gittensory-miner-ui @jsonbored/loopover-miner-ui
gittensory-review-enrichment loopover-review-enrichment

Rewrites every internal import/require, cross-package workspace dependency, root package.json script (--workspace invocations), CSS @import, and Dockerfile RUN command referencing these package names by their scoped identifier, so npm ci, every workspace build/test/lint script, and both self-host Docker images keep working. npm install regenerated the lockfile; workspace symlinks resolve correctly under the new names.

Deliberately unchanged (each tracked by its own separate rebrand issue)

  • On-disk directory paths (packages/gittensory-*, apps/gittensory-*) and every CI workflow path filter targeting them -- renaming directories cascades into ~100+ CI path-filter references and is a separate decision.
  • The CLI bin command names (gittensory-mcp, gittensory-miner) -- the installed binary a user types is a separate concern from the npm package identity (arguably belongs with MCP tool rename #4775's MCP-tool-rename pattern, not silently changed here).
  • The public-facing "how to install this today" instructions (root README.md, the systemd miner-service example, and 3 docs pages that mention the install command) -- these still correctly name the currently-real, currently-installable package. Updating them now would tell users to install a package that isn't published under the new name yet.
  • Actual npm publish / npm deprecate against the live registry -- separate, external actions for whoever runs the project's publish workflow, not part of this code change.

Test plan

  • npm install -- lockfile regenerated, workspace symlinks (node_modules/@jsonbored/loopover-*) resolve to the correct (unchanged) directories
  • npm run typecheck, npm run ui:lint
  • Full test:ci gate green end-to-end (including ui:build)
  • Found and fixed 2 real bugs via the full test run, not just the rename itself: two test-harness mock registry servers (mcp-cli-harness.ts, miner-cli-harness.ts) whose route matchers checked the OLD package-name substring in the request URL, silently swallowing the update-check nudge
  • Comprehensive diff-independent sweep confirming no stray old-package references remain outside the deliberately-deferred files listed above

Closes #4769.
Closes #5328.

Renames the "name" field (and brand-prose in "description"/"keywords")
for all 6 npm workspace packages plus the standalone review-enrichment
service:

  @jsonbored/gittensory-engine    -> @jsonbored/loopover-engine
  @jsonbored/gittensory-mcp       -> @jsonbored/loopover-mcp
  @jsonbored/gittensory-miner     -> @jsonbored/loopover-miner
  @jsonbored/gittensory-ui-kit    -> @jsonbored/loopover-ui-kit
  @jsonbored/gittensory-ui        -> @jsonbored/loopover-ui
  @jsonbored/gittensory-miner-ui  -> @jsonbored/loopover-miner-ui
  gittensory-review-enrichment    -> loopover-review-enrichment

Rewrites every internal import/require, cross-package workspace
dependency, root package.json script (--workspace invocations), CSS
@import, and Dockerfile RUN command referencing these package names by
their scoped identifier, so `npm ci`, every workspace build/test/lint
script, and both self-host Docker images keep working.

Fixes two test-harness mock registry servers (mcp-cli-harness.ts,
miner-cli-harness.ts) whose route matchers checked the OLD package-name
substring in the request URL -- caught by running the full suite, not
by the rename itself.

Deliberately unchanged (each tracked by its own separate rebrand
issue, not this one):
- On-disk directory paths (packages/gittensory-*, apps/gittensory-*)
  and every CI workflow path filter that targets them.
- The CLI "bin" command names (gittensory-mcp, gittensory-miner) --
  the actual installed binary a user types is a separate concern from
  the npm package identity.
- The public-facing "how to install this today" instructions (root
  README.md, the systemd miner-service example, and the 3 docs pages
  that already mention the npm install command) -- these still name
  the currently-real, currently-installable package. Updating them
  now would tell users to install a package that isn't published
  under the new name yet.
- Actual `npm publish` / `npm deprecate` against the live registry --
  those are separate, external actions for whoever runs the project's
  publish workflow, not part of this code change.
@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
gittensory-ui 7f1fc1e Commit Preview URL

Branch Preview URL
Jul 12 2026, 04:18 PM

@superagent-security

Copy link
Copy Markdown
Contributor

Superagent didn't find any vulnerabilities or security issues in this PR.

@codecov

codecov Bot commented Jul 12, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.43%. Comparing base (56d901d) to head (7f1fc1e).
⚠️ Report is 4 commits behind head on main.
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #5391   +/-   ##
=======================================
  Coverage   94.43%   94.43%           
=======================================
  Files         551      551           
  Lines       44223    44223           
  Branches    14654    14654           
=======================================
  Hits        41764    41764           
  Misses       1784     1784           
  Partials      675      675           
Flag Coverage Δ
shard-1 44.17% <25.00%> (ø)
shard-2 34.58% <50.00%> (ø)
shard-3 31.54% <25.00%> (ø)
shard-4 31.28% <75.00%> (ø)
shard-5 33.33% <75.00%> (ø)
shard-6 43.38% <25.00%> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
packages/gittensory-engine/src/focus-manifest.ts 99.19% <ø> (ø)
packages/gittensory-engine/src/miner/lint-guard.ts 100.00% <ø> (ø)
packages/gittensory-engine/src/miner/repo-map.ts 100.00% <ø> (ø)
...ages/gittensory-engine/src/opportunity-metadata.ts 100.00% <ø> (ø)
packages/gittensory-engine/src/reward-risk.ts 100.00% <ø> (ø)
...ges/gittensory-engine/src/signals/path-matchers.ts 100.00% <ø> (ø)
...ges/gittensory-engine/src/signals/test-evidence.ts 100.00% <ø> (ø)
packages/gittensory-engine/src/version.ts 100.00% <ø> (ø)
packages/gittensory-miner/lib/ams-policy.js 96.96% <ø> (ø)
packages/gittensory-miner/lib/attempt-cli.js 96.55% <ø> (ø)
... and 38 more
🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@loopover-orb loopover-orb Bot added the gittensor:bug Gittensor-scored bug fix — scores a 0.05x multiplier. label Jul 12, 2026
@loopover-orb

loopover-orb Bot commented Jul 12, 2026

Copy link
Copy Markdown

Warning

🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨

⏸️ Gittensory review result - manual review recommended

Review updated: 2026-07-12 16:28:21 UTC

244 files · 1 AI reviewer · no blockers · readiness 100/100 · CI green · clean

⏸️ Suggested Action - Manual Review

  • Touches a guarded path — held for manual review: This PR changes guardrail-protected path(s): apps/gittensory-ui/package.json (matched apps/gittensory-ui/**), apps/gittensory-ui/src/components/site/animated-terminal.tsx (matched apps/gittensory-ui/**), apps/gittensory-ui/src/components/ui/accordion.tsx (matched apps/gittensory-ui/**), apps/gittensory-ui/src/components/ui/alert-dialog.tsx (matched apps/gittensory-ui/**), apps/gittensory-ui/src/components/ui/alert.tsx (matched apps/gittensory-ui/**), and 86 more.

Review summary
This is a pure rename PR: it changes the npm `name` field (plus brand-prose in `description`/`keywords`) for the 6 workspace packages and the standalone `review-enrichment` service from `@​jsonbored/gittensory-*` to `@​jsonbored/loopover-*`, and mechanically rewrites every internal import, cross-package workspace dependency, CSS `@​import`, CI workflow reference, and Dockerfile `RUN` command to match. The diff is consistent internally — every `import`/`require`/`--workspace`/`@​import` site I can see was updated in lockstep with its package.json rename, and CI is fully green on this exact commit including build/typecheck/tests, so the workspace symlinks resolve correctly. The main open question is scope: the description says directory paths, CLI `bin` names, and public install docs are deliberately left as `gittensory-*` (tracked by separate issues), which is a reasonable, well-justified split of a large rename, but I could not verify from the truncated diff whether the linked issue (#4769) explicitly authorizes exactly this narrower scope.

Blockers

  • apps/gittensory-ui/src/lib/mcp-package.ts:4 fetches `https:​//registry.npmjs.org/@​jsonbored%2fgittensory-mcp` while `MCP_PACKAGE_NAME` and every generated install/link string now point at `@​jsonbored/loopover-mcp`, so the changelog and version helpers will report old-package metadata for the renamed package; change it to `export const MCP_PACKAGE_ENCODED_NAME = "@​jsonbored%2floopover-mcp";` or explain why this one lookup intentionally remains on the legacy package.
Nits — 7 non-blocking
  • packages/gittensory-miner/package.json:39 still pins `@​jsonbored/loopover-engine` with a wildcard `"*"` range — pre-existing pattern carried over from the rename, but worth tightening to a real semver range while touching this line.
  • The external brief flags no SLSA/sigstore attestation for the renamed packages — expected for internal workspace packages that aren't published yet, so likely a non-issue, but worth confirming this isn't scanning a stale registry entry.
  • Comment text in a few files (e.g. packages/gittensory-miner/lib/status.js:29-33, Dockerfile comments) still references old directory/package prose like `.gittensory-miner.yml` and `gittensory-miner` state dir alongside the new `@​jsonbored/loopover-*` name — intentional per the 'directories are a separate issue' scope note, but double-check for reader confusion where old and new names sit side by side in the same comment block.
  • release-please-config.json's `package-name` fields were updated to `@​jsonbored/loopover-*` but the component keys (`packages/gittensory-mcp`, `packages/gittensory-engine`) still use the old directory-based path — consistent with the 'directories unchanged' scope, just flagging as a place a future directory-rename PR must also touch.
  • Confirm issue Rename npm workspace packages #4769 (or whichever issue this closes) explicitly scopes the rename to package `name` fields only, matching the PR description's 'deliberately unchanged' list, so reviewers don't need to re-derive that boundary from the diff.
  • PR author also opened the linked issue — Link an issue that was opened by a different contributor, or provide a rationale for why this self-authored issue represents genuine discovery work.
  • Touches a guarded path — held for manual review — A maintainer must review and merge this change.
Signal Result Evidence
Code review ✅ No blockers 1 reviewer
Linked issue ✅ Linked #4769, #5328
Related work ✅ No active overlap found No same-issue or scoped active PR overlap found.
Change scope ✅ 20/20 Low review scope from cached public metadata (2 linked issues).
Validation posture ✅ 25/25 PR body includes validation/test evidence.
Contributor workload ✅ 10/10 Author activity: 44 registered-repo PR(s), 36 merged, 463 issue(s).
Contributor context ✅ Confirmed Gittensor contributor JSONbored; Gittensor profile; 44 PR(s), 463 issue(s).
Gate result ⚠️ Not blocking Advisory; not blocking this PR.
Improvement ✅ Minor risk: clean · value: minor — Code changes are accompanied by test evidence.
Review context
  • Author: JSONbored
  • Role context: owner (maintainer lane)
  • Public audience mode: oss maintainer
  • Lane context: Repository is configured for direct PR review.
  • Public profile languages: not available
  • Official Gittensor activity: 44 PR(s), 463 issue(s).
  • PR-specific overlap: none found.
Contributor next steps
  • Treat this as maintainer-lane context rather than normal contributor-lane activity.
Signal definitions
  • Related work = same linked issue, overlapping active PRs, or title/path similarity.
  • Change scope = cached public metadata such as size labels, draft state, and review-burden hints.
  • Validation posture = whether the PR provides enough public validation/test evidence for maintainer review.
  • Contributor workload = public contributor activity and cleanup pressure, not a repo-wide quality failure.
  • Contributor context = public GitHub/Gittensor identity context; non-Gittensor status is not a blocker.
[BETA] Chat with Gittensory

Ask 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.

  • @gittensory ask &lt;question&gt; answers contribution-quality Q&A with source citations and freshness.
  • @gittensory chat &lt;question&gt; answers in natural prose from cached decision-pack facts via local inference (maintainer/collaborator; read-only).
  • A plain-language @gittensory mention with a real question is routed to the closest matching read-only command automatically -- no exact syntax required.

Full command reference: https://gittensory.aethereal.dev/docs/gittensory-commands

Visual preview
Route Viewport Before (production) After (this PR's preview) Diff
/ desktop before / after /
/ mobile before / (mobile) after / (mobile)
/portfolio desktop before /portfolio after /portfolio
/portfolio mobile before /portfolio (mobile) after /portfolio (mobile)

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 Gittensory, a quiet PR intelligence layer for OSS maintainers.

  • Re-run Gittensory review

@JSONbored

Copy link
Copy Markdown
Owner Author

Closing rather than reworking in place — the target scope here was wrong. A new, dedicated npm org (`loopover`) exists for this rebrand, so the actual target names are `@loopover/engine`, `@loopover/mcp`, `@loopover/miner`, `@loopover/ui-kit`, `@loopover/ui`, `@loopover/ui-miner`, and `@loopover/rees` — not `@jsonbored/loopover-*` as done here.

This needs real planning (confirming publish access on the new org, doing all seven packages together in one coordinated pass) rather than a quick find-replace on this branch. Deferred in favor of lower-risk milestone items that don't depend on new external infrastructure being set up first. Tracking continues on #4769 and #5328.

@JSONbored JSONbored closed this Jul 12, 2026
JSONbored added a commit that referenced this pull request Jul 13, 2026
…org (#5601)

Advances #4769. Closes #5328. Renames all 7 workspace/standalone
packages from @jsonbored/gittensory-* to their new @Loopover
identities, established in the closing comment on the prior (wrong-
scope) attempt at #5391:

- @jsonbored/gittensory-engine    -> @loopover/engine
- @jsonbored/gittensory-mcp       -> @loopover/mcp
- @jsonbored/gittensory-miner     -> @loopover/miner
- @jsonbored/gittensory-ui-kit    -> @loopover/ui-kit
- @jsonbored/gittensory-ui        -> @loopover/ui        (private, no npm implications)
- @jsonbored/gittensory-miner-ui  -> @loopover/ui-miner  (private, no npm implications)
- gittensory-review-enrichment    -> @loopover/rees      (private, no npm implications)

Only engine and mcp are actually live on npm today; miner, ui-kit,
and rees have never been published. Updates every internal
cross-reference: package.json name/dependency fields, real source
imports (including packages/gittensory-miner/lib/*.js's ~30
hand-written, checked-in JS files with no build step), the
release-please config, and the two existing publish workflows
(npm-publish.yml, publish-engine.yml).

Deliberately unchanged, matching the established precedent from the
prior attempt's own accepted scope split: directory paths (stay
packages/gittensory-*), CLI bin command names (stay gittensory-mcp,
gittensory-miner, gittensory-miner-mcp), config filenames
(.gittensory-miner.yml), and the review-enrichment/ directory itself.
Those are tracked by separate issues (#4771 repo rename, #4776-class
artifact renames) or not renamed at all by design.

Several real runtime/CI-facing references used the old scope in forms
a literal-string search doesn't catch, found by exhaustively
re-auditing every original reference after the first pass:

- packages/gittensory-mcp/bin/gittensory-mcp.js's own npm-registry
  update-check used a PERCENT-ENCODED literal
  (`@jsonbored%2fgittensory-mcp`, not `@jsonbored/gittensory-mcp`) --
  this is the live, published CLI's actual version-check logic.
- apps/gittensory-ui/src/lib/mcp-package.ts's MCP_PACKAGE_ENCODED_NAME
  constant had the same percent-encoded staleness -- this is the
  exact gap PR #5391's own review comment flagged as a blocker last
  time, now fixed for real.
- scripts/check-ui-mcp-version-copy.mjs had a THIRD percent-encoded
  registry URL plus three more `@jsonbored\/gittensory-mcp` regex
  literals (escaped slashes, invisible to a plain-string grep) that
  silently would have stopped this CI-gating doc-staleness check from
  ever firing again.
- test/unit/support/{mcp,miner}-cli-harness.ts's fixture HTTP servers
  matched incoming registry requests via a bare `"gittensory-mcp/latest"`
  / `"gittensory-miner/latest"` substring (no `@jsonbored/` prefix, so
  never touched by the scope rename) -- fixed to match the new
  `loopover%2Fmcp` / `loopover%2Fminer` encoded path instead.
- test/unit/check-engine-parity-script.test.ts built its fixture
  node_modules path via `join(root, "node_modules", "@JSONbored",
  "gittensory-engine")` -- three separate join() arguments, not a
  contiguous string, so also invisible to a literal-string search.

- Setting up NEW CI publish automation for miner/ui-kit/rees (they've
  never been published; this is new capability, not a rename -- kept
  as a separate follow-up to keep this already-large PR to just the
  rename itself).
- The actual npm-side work: bootstrap-publishing each package once
  under its new name and configuring npmjs.com's Trusted Publisher
  per package. Neither is possible from a PR -- both require an
  authenticated npm session and the npmjs.com web UI.
- Deprecating the old @jsonbored/gittensory-mcp and
  @jsonbored/gittensory-engine npm listings (npm-side action, not a
  code change).

- [x] Full local gate (`npm run test:ci` + `npm audit --audit-level=moderate`) green.
- [x] Exhaustive re-sweep for percent-encoded, regex-escaped, and
      split-string old-scope references beyond the initial literal-string
      pass -- found and fixed 6 additional real occurrences.
- [x] Confirmed zero unintended collateral changes to the unrelated
      @jsonbored/gittensory-extension / @jsonbored/gittensory-miner-extension
      browser-extension packages (a real prefix-collision bug caught and
      reverted during development).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gittensor:bug Gittensor-scored bug fix — scores a 0.05x multiplier. manual-review Gittensor contributor context

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Rename the missing 6th npm workspace package (gittensory-ui-kit) and the standalone review-enrichment service Rename npm workspace packages

1 participant