From 5120ab440a6f62f500653ff7efa9267580280885 Mon Sep 17 00:00:00 2001 From: Luca Schleiss Date: Thu, 1 Oct 2026 06:10:58 +0000 Subject: [PATCH] chore(otter): point release and source links at otterware-app/otter-code The repository moved from acme-acme-acme to otterware-app. npm provenance rejects packages whose repository.url does not match the publishing repo. Co-Authored-By: Claude Opus 5.5 (1M context) --- OTTER.md | 4 ++-- apps/server/package.json | 2 +- apps/web/src/components/desktopUpdate.logic.test.ts | 6 +++--- apps/web/src/components/desktopUpdate.logic.ts | 2 +- apps/web/src/components/desktopUpdate.toast.test.tsx | 4 ++-- .../sidebar/SidebarUpdateReleaseNotes.test.tsx | 12 +++++------- packages/shared/src/cliRelease.test.ts | 4 ++-- packages/shared/src/cliRelease.ts | 2 +- packages/ssh/src/tunnel.test.ts | 2 +- scripts/build-npm-platform-packages.test.ts | 2 +- scripts/build-npm-platform-packages.ts | 4 ++-- scripts/install.ps1 | 2 +- scripts/install.sh | 2 +- 13 files changed, 23 insertions(+), 25 deletions(-) diff --git a/OTTER.md b/OTTER.md index 13e223b27b53..e4d63ec89035 100644 --- a/OTTER.md +++ b/OTTER.md @@ -68,7 +68,7 @@ different and how to keep the fork aligned with upstream. | URL scheme | `ottercode` (`ottercode-dev`, `ottercode-preview`) | | Data home | `~/.otter-code` (never `~/.t3`, so it can sit beside an installed T3 Code) | | Background service | `otter-code.service` (systemd user unit), `dev.otterware.code.service` (launchd) | -| Releases and updates | GitHub Releases of `acme-acme-acme/otter-code`, nightly channel | +| Releases and updates | GitHub Releases of `otterware-app/otter-code`, nightly channel | | Relay | `https://relay.otterware.dev` (Cloudflare Worker, deployed from `infra/relay`) | | Tunnels | `prod-.otterware.dev`, one per linked machine | | Hosted web app | `https://code.otterware.dev` (Vercel project `otter-code-web`) | @@ -131,7 +131,7 @@ source. Run it with `--dry-run` first. anything fails: ```sh - curl -fsSL https://raw.githubusercontent.com/acme-acme-acme/otter-code/main/scripts/install.sh \ + curl -fsSL https://raw.githubusercontent.com/otterware-app/otter-code/main/scripts/install.sh \ | T3CODE_HOME=~/.otter-code T3CODE_CHANNEL=nightly sh scripts/otter/migrate-from-t3.sh --from ~/.t3/orchestrator-preview-2829 \ --stop-unit t3code-pr2829.service --wait-idle 10 --install-service diff --git a/apps/server/package.json b/apps/server/package.json index ad4831dfe66d..bc6cd5b0ccd9 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -4,7 +4,7 @@ "license": "MIT", "repository": { "type": "git", - "url": "https://github.com/acme-acme-acme/otter-code", + "url": "https://github.com/otterware-app/otter-code", "directory": "apps/server" }, "bin": { diff --git a/apps/web/src/components/desktopUpdate.logic.test.ts b/apps/web/src/components/desktopUpdate.logic.test.ts index 53375342e310..c88fff5fb92d 100644 --- a/apps/web/src/components/desktopUpdate.logic.test.ts +++ b/apps/web/src/components/desktopUpdate.logic.test.ts @@ -182,13 +182,13 @@ describe("getDesktopUpdateActionError", () => { describe("desktop update UI helpers", () => { it("builds the stable release URL for a downloaded version", () => { expect(getDesktopUpdateReleaseUrl("0.0.30")).toBe( - "https://github.com/acme-acme-acme/otter-code/releases/tag/v0.0.30", + "https://github.com/otterware-app/otter-code/releases/tag/v0.0.30", ); }); it("builds the nightly release URL without dropping its version suffix", () => { expect(getDesktopUpdateReleaseUrl("0.0.30-nightly.20260728.931")).toBe( - "https://github.com/acme-acme-acme/otter-code/releases/tag/v0.0.30-nightly.20260728.931", + "https://github.com/otterware-app/otter-code/releases/tag/v0.0.30-nightly.20260728.931", ); }); @@ -199,7 +199,7 @@ describe("desktop update UI helpers", () => { it("builds the release history URL", () => { expect(getDesktopUpdateReleaseHistoryUrl()).toBe( - "https://github.com/acme-acme-acme/otter-code/releases", + "https://github.com/otterware-app/otter-code/releases", ); }); diff --git a/apps/web/src/components/desktopUpdate.logic.ts b/apps/web/src/components/desktopUpdate.logic.ts index 73a3c214002a..3938cf2047a4 100644 --- a/apps/web/src/components/desktopUpdate.logic.ts +++ b/apps/web/src/components/desktopUpdate.logic.ts @@ -2,7 +2,7 @@ import type { DesktopUpdateActionResult, DesktopUpdateState } from "@t3tools/con export type DesktopUpdateButtonAction = "download" | "install" | "none"; -const DESKTOP_RELEASE_HISTORY_URL = "https://github.com/acme-acme-acme/otter-code/releases"; +const DESKTOP_RELEASE_HISTORY_URL = "https://github.com/otterware-app/otter-code/releases"; const DESKTOP_RELEASE_TAG_URL = `${DESKTOP_RELEASE_HISTORY_URL}/tag`; /** diff --git a/apps/web/src/components/desktopUpdate.toast.test.tsx b/apps/web/src/components/desktopUpdate.toast.test.tsx index 568ba4cc9a5b..2c8ff8ec0abe 100644 --- a/apps/web/src/components/desktopUpdate.toast.test.tsx +++ b/apps/web/src/components/desktopUpdate.toast.test.tsx @@ -73,7 +73,7 @@ describe("showDesktopUpdateDownloadedToast", () => { link?.props.onClick?.(); await vi.waitFor(() => { expect(openExternal).toHaveBeenCalledWith( - "https://github.com/acme-acme-acme/otter-code/releases/tag/v0.0.30", + "https://github.com/otterware-app/otter-code/releases/tag/v0.0.30", ); }); expect(testState.addToast).toHaveBeenCalledTimes(1); @@ -91,7 +91,7 @@ describe("showDesktopUpdateDownloadedToast", () => { await vi.waitFor(() => { expect(openExternal).toHaveBeenCalledWith( - "https://github.com/acme-acme-acme/otter-code/releases/tag/v0.0.30", + "https://github.com/otterware-app/otter-code/releases/tag/v0.0.30", ); }); }); diff --git a/apps/web/src/components/sidebar/SidebarUpdateReleaseNotes.test.tsx b/apps/web/src/components/sidebar/SidebarUpdateReleaseNotes.test.tsx index 58455674d883..6c0d49fcf124 100644 --- a/apps/web/src/components/sidebar/SidebarUpdateReleaseNotes.test.tsx +++ b/apps/web/src/components/sidebar/SidebarUpdateReleaseNotes.test.tsx @@ -87,9 +87,9 @@ describe("SidebarUpdateReleaseNotes", () => { ); expect(anchors.map(({ props }) => props.href)).toEqual([ - "https://github.com/acme-acme-acme/otter-code/releases/tag/v0.0.36-nightly.3", - "https://github.com/acme-acme-acme/otter-code/releases/tag/v0.0.36-nightly.2", - "https://github.com/acme-acme-acme/otter-code/releases/tag/v0.0.36-nightly.1", + "https://github.com/otterware-app/otter-code/releases/tag/v0.0.36-nightly.3", + "https://github.com/otterware-app/otter-code/releases/tag/v0.0.36-nightly.2", + "https://github.com/otterware-app/otter-code/releases/tag/v0.0.36-nightly.1", ]); expect(anchors.map(({ props }) => textContent(props.children))).toEqual([ "View release on GitHub", @@ -107,9 +107,7 @@ describe("SidebarUpdateReleaseNotes", () => { }), ); - expect(anchors.at(-1)?.props.href).toBe( - "https://github.com/acme-acme-acme/otter-code/releases", - ); + expect(anchors.at(-1)?.props.href).toBe("https://github.com/otterware-app/otter-code/releases"); expect(textContent(anchors.at(-1)?.props.children)).toBe("1 older release on GitHub"); }); @@ -143,7 +141,7 @@ describe("SidebarUpdateReleaseNotes", () => { expect(preventDefault).toHaveBeenCalledOnce(); await vi.waitFor(() => { expect(openExternal).toHaveBeenCalledWith( - "https://github.com/acme-acme-acme/otter-code/releases/tag/v0.0.36-nightly.3", + "https://github.com/otterware-app/otter-code/releases/tag/v0.0.36-nightly.3", ); expect(testState.addToast).toHaveBeenCalledWith({ type: "error", diff --git a/packages/shared/src/cliRelease.test.ts b/packages/shared/src/cliRelease.test.ts index eaf06f25828c..98737c5876c9 100644 --- a/packages/shared/src/cliRelease.test.ts +++ b/packages/shared/src/cliRelease.test.ts @@ -33,7 +33,7 @@ describe("cliRelease", () => { it("resolves download URLs under the tagged release, honoring a mirror", () => { expect(cliReleaseDownloadBaseUrl("1.2.3")).toBe( - "https://github.com/acme-acme-acme/otter-code/releases/download/v1.2.3", + "https://github.com/otterware-app/otter-code/releases/download/v1.2.3", ); expect(cliReleaseDownloadBaseUrl("1.2.3", "https://mirror.example/t3/")).toBe( "https://mirror.example/t3/v1.2.3", @@ -87,7 +87,7 @@ describe("cliRelease", () => { it("pages through the release index at the largest page GitHub allows", () => { expect(cliReleaseIndexPageUrl(1)).toBe( - "https://api.github.com/repos/acme-acme-acme/otter-code/releases?per_page=100&page=1", + "https://api.github.com/repos/otterware-app/otter-code/releases?per_page=100&page=1", ); expect(cliReleaseIndexPageUrl(3)).toContain("page=3"); }); diff --git a/packages/shared/src/cliRelease.ts b/packages/shared/src/cliRelease.ts index 103a35cd0f5c..1d7b32a718e0 100644 --- a/packages/shared/src/cliRelease.ts +++ b/packages/shared/src/cliRelease.ts @@ -5,7 +5,7 @@ * platform key, so a rename here is a release-breaking change. */ -const CLI_RELEASE_REPOSITORY = "acme-acme-acme/otter-code"; +const CLI_RELEASE_REPOSITORY = "otterware-app/otter-code"; export const CLI_RELEASE_CHECKSUMS_FILE = "SHA256SUMS"; /** Overrides the download origin for mirrors and air-gapped installs. */ export const CLI_RELEASE_BASE_URL_ENV = "T3CODE_RELEASE_BASE_URL"; diff --git a/packages/ssh/src/tunnel.test.ts b/packages/ssh/src/tunnel.test.ts index b0c20ad9e425..92d214a597ae 100644 --- a/packages/ssh/src/tunnel.test.ts +++ b/packages/ssh/src/tunnel.test.ts @@ -105,7 +105,7 @@ describe("ssh tunnel scripts", () => { assert.include(script, "T3_NODE_SCRIPT_PATH=''"); assert.include( script, - "T3_RELEASE_BASE_URL='https://github.com/acme-acme-acme/otter-code/releases/download'", + "T3_RELEASE_BASE_URL='https://github.com/otterware-app/otter-code/releases/download'", ); assert.include( script, diff --git a/scripts/build-npm-platform-packages.test.ts b/scripts/build-npm-platform-packages.test.ts index 996a1935f1d9..890d657ae719 100644 --- a/scripts/build-npm-platform-packages.test.ts +++ b/scripts/build-npm-platform-packages.test.ts @@ -255,7 +255,7 @@ it.layer(NodeServices.layer)("build-npm-platform-packages", (it) => { assert.equal(unsupported.exitCode, 1); assert.include(unsupported.stderr, "linux-x64"); assert.include(unsupported.stderr, "win32-arm64"); - assert.include(unsupported.stderr, "https://github.com/acme-acme-acme/otter-code/releases"); + assert.include(unsupported.stderr, "https://github.com/otterware-app/otter-code/releases"); }), ); }); diff --git a/scripts/build-npm-platform-packages.ts b/scripts/build-npm-platform-packages.ts index 452427c0f67a..0fe26e1914ef 100644 --- a/scripts/build-npm-platform-packages.ts +++ b/scripts/build-npm-platform-packages.ts @@ -164,7 +164,7 @@ export function npmPlatformPackageReadme(platformKey: CliArchivePlatformKey): st `npx ${NPM_LAUNCHER_PACKAGE_NAME}@latest`, "```", "", - "Source and documentation: https://github.com/acme-acme-acme/otter-code", + "Source and documentation: https://github.com/otterware-app/otter-code", "", ].join("\n"); } @@ -211,7 +211,7 @@ try { "${NPM_LAUNCHER_PACKAGE_NAME}: no Otter Code CLI build is available for this platform (" + key + ").", "Supported platforms: " + SUPPORTED.join(", ") + ".", "If yours is listed, reinstall ${NPM_LAUNCHER_PACKAGE_NAME} so npm fetches its optional dependency.", - "The desktop app and release archives are at https://github.com/acme-acme-acme/otter-code/releases", + "The desktop app and release archives are at https://github.com/otterware-app/otter-code/releases", "", ].join("\\n"), ); diff --git a/scripts/install.ps1 b/scripts/install.ps1 index 7cfcb74b5db4..9a394df77ad0 100644 --- a/scripts/install.ps1 +++ b/scripts/install.ps1 @@ -16,7 +16,7 @@ $ErrorActionPreference = "Stop" [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 -$repo = "acme-acme-acme/otter-code" +$repo = "otterware-app/otter-code" $baseUrl = if ($env:T3CODE_RELEASE_BASE_URL) { $env:T3CODE_RELEASE_BASE_URL.TrimEnd("/") } else { "https://github.com/$repo/releases/download" } $t3Home = if ($env:T3CODE_HOME) { $env:T3CODE_HOME } else { Join-Path $HOME ".otter-code" } $binDir = if ($env:T3CODE_INSTALL_BIN_DIR) { $env:T3CODE_INSTALL_BIN_DIR } else { Join-Path $HOME ".local\bin" } diff --git a/scripts/install.sh b/scripts/install.sh index fa4413fbcf2d..f01d51e9c410 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -17,7 +17,7 @@ # instead of fetching the release again. set -eu -repo="acme-acme-acme/otter-code" +repo="otterware-app/otter-code" base_url="${T3CODE_RELEASE_BASE_URL:-https://github.com/${repo}/releases/download}" t3_home="${T3CODE_HOME:-$HOME/.otter-code}" bin_dir="${T3CODE_INSTALL_BIN_DIR:-$HOME/.local/bin}"