+
+
+
+ {language.t("ssh.stage.incompatible")}
+ {language.t("ssh.error.version")}
+
+
{(prompt) => (
@@ -195,7 +207,7 @@ export function DialogSsh(props: {
)}
-
+
{(error) => (
{error()}
diff --git a/packages/desktop/src/main/remote/cli.test.ts b/packages/desktop/src/main/remote/cli.test.ts
index 25236626e86..96b2c74b74e 100644
--- a/packages/desktop/src/main/remote/cli.test.ts
+++ b/packages/desktop/src/main/remote/cli.test.ts
@@ -22,7 +22,7 @@ it.live(
Effect.provideService(
HttpClient.HttpClient,
HttpClient.make((request) => {
- expect(request.url).toBe("https://registry.npmjs.org/@opencode-ai%2fcli/beta")
+ expect(request.url).toBe("https://registry.npmjs.org/@opencode%2fcli/beta")
return Effect.succeed(HttpClientResponse.fromWeb(request, response))
}),
),
@@ -65,7 +65,7 @@ posix(
test("pins platform-specific artifacts and rejects unsafe inputs", () => {
expect(RemoteCli.archiveUrl("linux-x64-baseline-musl", "2.0.0-beta.1")).toBe(
- "https://registry.npmjs.org/@opencode-ai/cli-linux-x64-baseline-musl/-/cli-linux-x64-baseline-musl-2.0.0-beta.1.tgz",
+ "https://registry.npmjs.org/@opencode/cli-linux-x64-baseline-musl/-/cli-linux-x64-baseline-musl-2.0.0-beta.1.tgz",
)
expect(() => RemoteCli.installScript({ version: '2.0.0"; whoami', source: { type: "installer" } })).toThrow()
expect(() => RemoteCli.archiveUrl("linux-x64;whoami", "2.0.0")).toThrow()
diff --git a/packages/desktop/src/main/remote/cli.ts b/packages/desktop/src/main/remote/cli.ts
index f71a68dbd03..96cdef26460 100644
--- a/packages/desktop/src/main/remote/cli.ts
+++ b/packages/desktop/src/main/remote/cli.ts
@@ -68,7 +68,7 @@ printf 'OPENCODE_REMOTE_TARGET=%s\\n' "$target"
export function archiveUrl(target: string, version: string) {
if (!/^(linux|darwin)-(x64-baseline|arm64)(-musl)?$/.test(target))
throw new Failure({ code: "platform", detail: target })
- return `https://registry.npmjs.org/@opencode-ai/cli-${target}/-/cli-${target}-${requireVersion(version)}.tgz`
+ return `https://registry.npmjs.org/@opencode/cli-${target}/-/cli-${target}-${requireVersion(version)}.tgz`
}
type Source = { type: "download"; url: string } | { type: "archive" } | { type: "installer"; binary?: string }
@@ -114,12 +114,12 @@ const Beta = Schema.Struct({ version: Schema.String.check(Schema.isPattern(/^0\.
export const latestBeta = Effect.fn("RemoteCli.latestBeta")(function* () {
const http = yield* HttpClient.HttpClient
- const metadata = yield* http.get("https://registry.npmjs.org/@opencode-ai%2fcli/beta").pipe(
+ const metadata = yield* http.get("https://registry.npmjs.org/@opencode%2fcli/beta").pipe(
Effect.flatMap(HttpClientResponse.filterStatusOk),
Effect.flatMap(HttpClientResponse.schemaBodyJson(Beta)),
Effect.timeout("30 seconds"),
Effect.mapError(
- () => new Failure({ code: "install", detail: "https://registry.npmjs.org/@opencode-ai%2fcli/beta" }),
+ () => new Failure({ code: "install", detail: "https://registry.npmjs.org/@opencode%2fcli/beta" }),
),
)
return metadata.version