Skip to content

Commit 8106063

Browse files
authored
refactor(rebrand): update GitHub App slug to loopover-orb (#4772) (#5612)
Closes #4772. The GitHub App itself was renamed "Gittensory Orb" -> "Loopover ORB" directly in GitHub settings (confirmed resulting slug: loopover-orb, via https://github.com/apps/loopover-orb) -- in-place rename, not a new App registration, so existing installations and webhook deliveries are unaffected (keyed by the App's immutable ID, not its slug). Also updated on GitHub's side as part of the same change: Homepage URL -> https://loopover.ai; a second OAuth callback URL added for https://api.loopover.ai/v1/orb/oauth/callback (the old gittensory-api.aethereal.dev one stays registered until the PUBLIC_API_ORIGIN flip lands separately); Webhook URL -> https://api.loopover.ai/v1/orb/webhook (safe immediately -- that domain already routes to the same live Worker as the old one, from the earlier domain-wiring work). Code-side, the only real reference to the App's actual slug is PUBLIC_GITHUB_APP_SLUG in src/services/subnet-interface.ts -- a hardcoded product-identity constant (not env-driven) used to build the install-URL descriptor served to the Bittensor subnet registry. Updated it + the two tests asserting its value. Everything else matching "gittensory-orb"/"gittensory-orb[bot]" across the test suite (self-authored-detection fixtures, webhook sender-login test data) belongs to a DIFFERENT, already-fully-deleted review App (its own GITHUB_APP_SLUG env var was removed from wrangler.jsonc back on 2026-07-12) -- those are arbitrary, internally-consistent test strings unrelated to the Orb App's real identity, not production values, so left untouched. apps/gittensory-ui/src/routes/docs.self-hosting-release-checklist.tsx's "gittensory-orb@0.1.0" Sentry-release-id mention is a historical record of an actual past release and is deliberately never edited, same as CHANGELOG.md. ## Test plan - [x] Full local gate (`npm run test:ci` + `npm audit --audit-level=moderate`) green. - [x] Confirmed via a live fetch to https://github.com/apps/loopover-orb that the App rename produced exactly the expected slug before touching any code.
1 parent 5d09204 commit 8106063

3 files changed

Lines changed: 4 additions & 4 deletions

File tree

src/services/subnet-interface.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const SUBNET_INTERFACE_SCHEMA_VERSION = "1.0";
99
// below). Hardcoded like the other product-identity constants in this file (not env-driven): it's the same
1010
// stable, real app across every deployment of this descriptor, independent of which credentials any one
1111
// Worker instance happens to hold for its own operational purposes.
12-
const PUBLIC_GITHUB_APP_SLUG = "gittensory-orb";
12+
const PUBLIC_GITHUB_APP_SLUG = "loopover-orb";
1313

1414
// Curated, contribution-relevant MCP tools surfaced to agents/devs who discover gittensor via metagraphed.
1515
// Names mirror src/mcp/server.ts registrations; the list is intentionally a miner-facing subset (not all 33).

test/integration/subnet-interface.test.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ describe("public subnet-interface descriptor route", () => {
1818
mcp: { endpoint: "https://gittensory-api.aethereal.dev/mcp", transport: "http" },
1919
// The publicly installable App slug is a stable hardcoded product identity now (see
2020
// subnet-interface.ts) -- independent of the Worker's own GITHUB_APP_SLUG, which no longer exists.
21-
githubApp: { slug: "gittensory-orb", installUrl: "https://github.com/apps/gittensory-orb" },
21+
githubApp: { slug: "loopover-orb", installUrl: "https://github.com/apps/loopover-orb" },
2222
},
2323
});
2424
});

test/unit/subnet-interface.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@ describe("buildSubnetInterfaceDescriptor", () => {
1616
expect(descriptor.interfaces.mcp.endpoint).toBe("https://gittensory-api.aethereal.dev/mcp");
1717
expect(descriptor.interfaces.mcp.transport).toBe("http");
1818
// The publicly installable App slug is a stable hardcoded product identity, not derived from any Worker
19-
// var (the old review App's GITHUB_APP_SLUG was removed; gittensory-orb is the real, current, installable App).
20-
expect(descriptor.interfaces.githubApp).toMatchObject({ kind: "github_app", slug: "gittensory-orb", installUrl: "https://github.com/apps/gittensory-orb" });
19+
// var (the old review App's GITHUB_APP_SLUG was removed; loopover-orb is the real, current, installable App).
20+
expect(descriptor.interfaces.githubApp).toMatchObject({ kind: "github_app", slug: "loopover-orb", installUrl: "https://github.com/apps/loopover-orb" });
2121

2222
const toolNames = descriptor.interfaces.mcp.tools.map((tool) => tool.name);
2323
expect(toolNames).toContain("gittensory_get_decision_pack");

0 commit comments

Comments
 (0)