You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
refactor(packages): rename all npm workspace packages to the @Loopover 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).
gittensory-mcp init-client --print codex # prints TOML for ~/.codex/config.toml ([mcp_servers.gittensory])
102
102
gittensory-mcp init-client --print claude # or --print cursor — prints the correct config per tool
@@ -206,7 +206,7 @@ Run the matching command(s) and **commit the regenerated file(s)** — CI fails
206
206
| Added a raw-SQL migration | (none — just author it) | next **contiguous**`migrations/NNNN_snake.sql`|
207
207
|`src/selfhost/**` (or a few other scanned files — see `scripts/gen-selfhost-env-reference.mjs`'s `DEFAULT_SOURCE_ROOTS`) adding/removing an `env.SOMETHING` read |`npm run selfhost:env-reference`|`apps/gittensory-ui/src/lib/selfhost-env-reference.ts` — the doc cites the file only (not `file:line`, deliberately, so an unrelated line shift elsewhere in the file never makes this go stale) |
208
208
| CLI command surface |`npm run command-reference`| the generated command-reference doc |
Copy file name to clipboardExpand all lines: .claude/skills/contributing-to-loopover/reference.md
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -59,12 +59,12 @@ these for a normal PR:**
59
59
| Local command | Why it's not in the table above |
60
60
|---|---|
61
61
|`npm run test:engine-parity`, `npm run test:live-gate-parity`, `npm run test:driver-parity`| Plain `test/contract/*.test.ts` files — no dedicated CI job, but they DO run in CI as part of whichever `test (1/2)` shard happens to contain them (sharded `vitest run`). |
62
-
|`npm run test --workspace @jsonbored/gittensory-engine`| The engine package's own `node --test` suite. **Not run by `ci.yml` on a PR at all** — only by `.github/workflows/publish-engine.yml` at release time. A regression here is invisible to Codecov and to every PR-gating CI check; `test:ci` locally is the only pre-merge signal. |
62
+
|`npm run test --workspace @loopover/engine`| The engine package's own `node --test` suite. **Not run by `ci.yml` on a PR at all** — only by `.github/workflows/publish-engine.yml` at release time. A regression here is invisible to Codecov and to every PR-gating CI check; `test:ci` locally is the only pre-merge signal. |
63
63
|`npm run manifest:drift-check`, `npm run engine-parity:drift-check`| Appear in `test:ci` only — not in `ci.yml` under any job. |
64
64
65
65
This is a real, previously-hit gap, not a hypothetical: a past PR shipped a genuine, undetected
66
66
`codecov/patch`-adjacent regression in the engine package specifically because `test --workspace
67
-
@jsonbored/gittensory-engine` isn't part of `ci.yml`. If your change touches
67
+
@loopover/engine` isn't part of `ci.yml`. If your change touches
68
68
`packages/gittensory-engine/**`, running `npm run test:ci` locally (not just watching the PR's CI
69
69
checks go green) is the only way to know you didn't break it.
Published [@jsonbored/gittensory-mcp v${RELEASE_VERSION}](https://www.npmjs.com/package/@jsonbored/gittensory-mcp/v/${RELEASE_VERSION}) to npm with provenance.
207
+
Published [@loopover/mcp v${RELEASE_VERSION}](https://www.npmjs.com/package/@loopover/mcp/v/${RELEASE_VERSION}) to npm with provenance.
Published [@jsonbored/gittensory-engine v${RELEASE_VERSION}](https://www.npmjs.com/package/@jsonbored/gittensory-engine/v/${RELEASE_VERSION}) to npm with provenance.
227
+
Published [@loopover/engine v${RELEASE_VERSION}](https://www.npmjs.com/package/@loopover/engine/v/${RELEASE_VERSION}) to npm with provenance.
0 commit comments