From 47097392b2e2b57031c4ea04e473a3245c27e75a Mon Sep 17 00:00:00 2001 From: JSONbored <49853598+JSONbored@users.noreply.github.com> Date: Sun, 12 Jul 2026 16:45:14 -0700 Subject: [PATCH 1/2] refactor(extension): rename browser extension manifests and API origin to loopover MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Renames both apps/gittensory-extension and apps/gittensory-miner-extension manifests' name/description/action.default_title, the maintainer overlay's default API origin (now the live api.loopover.ai custom-domain route on the same Worker), the built extension zip's filename/path, and the download link on the site's /extension page. Updates the .gitignore entry, the production smoke-test target, and a stale CI-comment reference in lockstep so nothing disagrees with the renamed artifact. Deliberately unchanged: directory names (apps/gittensory-extension/, apps/gittensory-miner-extension/ — npm-package-adjacent, deferred), the gts_ token wire-format prefix and GITTENSORY_SESSION_PATTERN identifier, the real jsonbored/gittensory GitHub repo-slug demo string, and the site's own domain/API-origin env vars (a separate, not-yet-cut-over concern). Closes #5329. --- .github/workflows/ui-preview-deploy.yml | 2 +- .gitignore | 2 +- apps/gittensory-extension/auth.js | 10 +++++----- apps/gittensory-extension/manifest.json | 8 ++++---- apps/gittensory-miner-extension/manifest.json | 4 ++-- apps/gittensory-ui/src/routes/extension.tsx | 16 ++++++++-------- scripts/build-extension.mjs | 2 +- scripts/smoke-production.mjs | 2 +- 8 files changed, 23 insertions(+), 23 deletions(-) diff --git a/.github/workflows/ui-preview-deploy.yml b/.github/workflows/ui-preview-deploy.yml index 8984938422..c590d5cac2 100644 --- a/.github/workflows/ui-preview-deploy.yml +++ b/.github/workflows/ui-preview-deploy.yml @@ -100,7 +100,7 @@ jobs: test -d client || { echo "::error::artifact missing client/ assets dir"; exit 1; } # 3) Allowlist file extensions — fail on anything that isn't a normal web/build output (blocks # smuggled scripts/binaries). A few extensionless CF asset files are explicitly permitted. - # `zip` covers the served downloads (e.g. /downloads/gittensory-extension.zip) — a passive + # `zip` covers the served downloads (e.g. /downloads/loopover-extension.zip) — a passive # static asset wrangler only uploads (never executes), so allowing it doesn't run fork code. unexpected="$(find . -regextype posix-extended -type f \ -not -iregex '.*\.(mjs|js|cjs|map|json|css|html?|txt|svg|png|jpe?g|gif|webp|avif|ico|bmp|woff2?|ttf|otf|eot|wasm|xml|webmanifest|md|csv|zip|wgsl|glb|gltf)$' \ diff --git a/.gitignore b/.gitignore index e10fde5435..faf6ce49fa 100644 --- a/.gitignore +++ b/.gitignore @@ -51,7 +51,7 @@ coverage/ *.tsbuildinfo site/.vitepress/cache/ !migrations/*.sql -apps/gittensory-ui/public/downloads/gittensory-extension.zip +apps/gittensory-ui/public/downloads/loopover-extension.zip .worker-configuration.gen-check.d.ts # Ad-hoc operator backup files (e.g. `cp file.yml file.yml.bak-notes-20260707`) -- general # catch-alls so a stray manual snapshot never dirties `git status` on a Git-backed self-host diff --git a/apps/gittensory-extension/auth.js b/apps/gittensory-extension/auth.js index bc5d7b8294..b4913736ac 100644 --- a/apps/gittensory-extension/auth.js +++ b/apps/gittensory-extension/auth.js @@ -1,6 +1,6 @@ -export const DEFAULT_API_ORIGIN = "https://gittensory-api.aethereal.dev"; -export const EXTENSION_SESSION_REQUIRED_MESSAGE = "Set an extension session token in Gittensory extension options."; -export const EXTENSION_SESSION_EXPIRED_MESSAGE = "Extension session expired or revoked. Create a fresh extension token in Gittensory."; +export const DEFAULT_API_ORIGIN = "https://api.loopover.ai"; +export const EXTENSION_SESSION_REQUIRED_MESSAGE = "Set an extension session token in LoopOver extension options."; +export const EXTENSION_SESSION_EXPIRED_MESSAGE = "Extension session expired or revoked. Create a fresh extension token in LoopOver."; export const STORAGE_KEYS = { apiOrigin: "apiOrigin", @@ -50,10 +50,10 @@ export function validateExtensionSessionToken(value) { const token = String(value ?? "").trim(); if (!token) throw new Error(EXTENSION_SESSION_REQUIRED_MESSAGE); if (looksLikeGitHubPersonalAccessToken(token)) { - throw new Error("GitHub personal access tokens are not accepted. Create a Gittensory extension token instead."); + throw new Error("GitHub personal access tokens are not accepted. Create a LoopOver extension token instead."); } if (!GITTENSORY_SESSION_PATTERN.test(token)) { - throw new Error("Extension tokens must be Gittensory session tokens that start with gts_."); + throw new Error("Extension tokens must be LoopOver session tokens that start with gts_."); } return token; } diff --git a/apps/gittensory-extension/manifest.json b/apps/gittensory-extension/manifest.json index bcd429f9af..55671b2e48 100644 --- a/apps/gittensory-extension/manifest.json +++ b/apps/gittensory-extension/manifest.json @@ -1,10 +1,10 @@ { "manifest_version": 3, - "name": "Gittensory Maintainer Overlay", - "description": "Private Gittensory pull request context on GitHub.", + "name": "LoopOver Maintainer Overlay", + "description": "Private LoopOver pull request context on GitHub.", "version": "0.1.0", "permissions": ["storage"], - "host_permissions": ["https://github.com/*", "https://gittensory-api.aethereal.dev/*"], + "host_permissions": ["https://github.com/*", "https://api.loopover.ai/*"], "background": { "service_worker": "background.js", "type": "module" @@ -19,6 +19,6 @@ ], "options_page": "options.html", "action": { - "default_title": "Gittensory" + "default_title": "LoopOver" } } diff --git a/apps/gittensory-miner-extension/manifest.json b/apps/gittensory-miner-extension/manifest.json index 5dca73f687..2e3be765f1 100644 --- a/apps/gittensory-miner-extension/manifest.json +++ b/apps/gittensory-miner-extension/manifest.json @@ -1,6 +1,6 @@ { "manifest_version": 3, - "name": "Gittensory Miner Opportunity", + "name": "LoopOver Miner Opportunity", "description": "Contributor-facing GitHub issue opportunity signals from a locally configured miner plane.", "version": "0.1.0", "permissions": ["storage"], @@ -19,6 +19,6 @@ ], "options_page": "options.html", "action": { - "default_title": "Gittensory Miner" + "default_title": "LoopOver Miner" } } diff --git a/apps/gittensory-ui/src/routes/extension.tsx b/apps/gittensory-ui/src/routes/extension.tsx index 4e489c0f6d..75f26507a2 100644 --- a/apps/gittensory-ui/src/routes/extension.tsx +++ b/apps/gittensory-ui/src/routes/extension.tsx @@ -14,13 +14,13 @@ import { cn } from "@/lib/utils"; export const Route = createFileRoute("/extension")({ head: () => ({ meta: [ - { title: "Browser extension — Gittensory" }, + { title: "Browser extension — LoopOver" }, { name: "description", content: "Private maintainer overlays on github.com. Never shown to PR authors or the public — reviewability context where you already work.", }, - { property: "og:title", content: "Gittensory · maintainer browser extension" }, + { property: "og:title", content: "LoopOver · maintainer browser extension" }, { property: "og:description", content: @@ -44,13 +44,13 @@ function ExtensionPage() { Maintainer overlays on the GitHub you already use.
- The Gittensory browser extension surfaces miner context, scoreability projections, and + The LoopOver browser extension surfaces miner context, scoreability projections, and reviewability hints on PR pages — visible only to the maintainer running it. Nothing is injected into the page or shown to the PR author.
- {/* gittensory overlay panel */} + {/* loopover overlay panel */}