From 78b081ff79b9fffaa1f62bc0154974a789135d54 Mon Sep 17 00:00:00 2001 From: anandgupta42 Date: Sun, 22 Mar 2026 17:22:45 -0700 Subject: [PATCH 1/3] fix: upgrade notification silently skipped in multiple scenarios The upgrade indicator was never shown when: - `autoupdate` was `false` or `OPENCODE_DISABLE_AUTOUPDATE` was set - Install method was `"unknown"` or `"yarn"` - Auto-upgrade failed (error swallowed by `.catch(() => {})`) Additionally, there was no guard against downgrading canary/preview users to an older stable release. Changes: - Always publish `UpdateAvailable` event so the indicator and toast appear - Add `semver.gte()` guard to prevent downgrades - Add `log.warn()` for `latest()` fetch failures and auto-upgrade errors - Handle `yarn` install method explicitly (detected but not auto-upgradeable) - Add 34 tests covering every decision path in `upgrade()` - Update docs: clarify `autoupdate` config values, add upgrade indicator note Co-Authored-By: Claude Opus 4.6 (1M context) --- .../assets/images/upgrade-indicator-shown.png | Bin 0 -> 69536 bytes .../assets/images/upgrade-no-indicator.png | Bin 0 -> 50230 bytes docs/docs/configure/config.md | 2 +- docs/docs/reference/troubleshooting.md | 11 +- docs/docs/usage/cli.md | 2 +- packages/opencode/src/cli/upgrade.ts | 39 +- .../test/cli/upgrade-decision.test.ts | 343 ++++++++++++++++++ 7 files changed, 390 insertions(+), 7 deletions(-) create mode 100644 docs/docs/assets/images/upgrade-indicator-shown.png create mode 100644 docs/docs/assets/images/upgrade-no-indicator.png create mode 100644 packages/opencode/test/cli/upgrade-decision.test.ts diff --git a/docs/docs/assets/images/upgrade-indicator-shown.png b/docs/docs/assets/images/upgrade-indicator-shown.png new file mode 100644 index 0000000000000000000000000000000000000000..44145873410d623e764799292f8f2c231663bfb7 GIT binary patch literal 69536 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 z

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 P0l)OLjkQ|fF0uay6__Fr literal 0 HcmV?d00001 diff --git a/docs/docs/assets/images/upgrade-no-indicator.png b/docs/docs/assets/images/upgrade-no-indicator.png new file mode 100644 index 0000000000000000000000000000000000000000..52f06edc4a7225903cb3ec6ffbf9f49288172f63 GIT binary patch literal 50230 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 S&4QQU3#p=`T!XL*{XYOCcSsQc literal 0 HcmV?d00001 diff --git a/docs/docs/configure/config.md b/docs/docs/configure/config.md index 8c2ed93f7e..6300fbf939 100644 --- a/docs/docs/configure/config.md +++ b/docs/docs/configure/config.md @@ -44,7 +44,7 @@ Configuration is loaded from multiple sources, with later sources overriding ear | `default_agent` | `string` | Default agent to use on startup | | `logLevel` | `string` | Log level: `DEBUG`, `INFO`, `WARN`, `ERROR` | | `share` | `string` | Session sharing: `"manual"`, `"auto"`, `"disabled"` | -| `autoupdate` | `boolean \| "notify"` | Auto-update behavior | +| `autoupdate` | `boolean \| "notify"` | Auto-update behavior: `true` (default) auto-upgrades, `"notify"` shows an indicator without upgrading, `false` disables auto-upgrade but still shows the update indicator | | `provider` | `object` | Provider configurations (see [Providers](providers.md)) | | `mcp` | `object` | MCP server configurations (see [MCP Servers](mcp-servers.md)) | | `formatter` | `object \| false` | Formatter settings (see [Formatters](formatters.md)) | diff --git a/docs/docs/reference/troubleshooting.md b/docs/docs/reference/troubleshooting.md index 4429bbf7a4..28e5e51e54 100644 --- a/docs/docs/reference/troubleshooting.md +++ b/docs/docs/reference/troubleshooting.md @@ -104,7 +104,7 @@ Disable auto-update if it causes problems: export ALTIMATE_CLI_DISABLE_AUTOUPDATE=true ``` -Or set to notification only: +Or set to notification only in your config: ```json { @@ -112,6 +112,15 @@ Or set to notification only: } ``` +Both options still show an upgrade indicator in the footer when a new version is available. To upgrade manually, run: + +```bash +altimate upgrade +``` + +!!! note + When an update is available, you'll see `↑ update available · altimate upgrade` in the bottom-right corner of the TUI. + ### Context Too Large If conversations hit context limits: diff --git a/docs/docs/usage/cli.md b/docs/docs/usage/cli.md index 804923785e..a7e926193f 100644 --- a/docs/docs/usage/cli.md +++ b/docs/docs/usage/cli.md @@ -68,7 +68,7 @@ Configuration can be controlled via environment variables: | Variable | Description | | -------------------------------------- | ------------------------------------ | -| `ALTIMATE_CLI_DISABLE_AUTOUPDATE` | Disable automatic updates | +| `ALTIMATE_CLI_DISABLE_AUTOUPDATE` | Disable automatic updates (still shows upgrade indicator) | | `ALTIMATE_CLI_DISABLE_LSP_DOWNLOAD` | Don't auto-download LSP servers | | `ALTIMATE_CLI_DISABLE_AUTOCOMPACT` | Disable automatic context compaction | | `ALTIMATE_CLI_DISABLE_DEFAULT_PLUGINS` | Skip loading default plugins | diff --git a/packages/opencode/src/cli/upgrade.ts b/packages/opencode/src/cli/upgrade.ts index 2d46ae39fa..75a77b3d36 100644 --- a/packages/opencode/src/cli/upgrade.ts +++ b/packages/opencode/src/cli/upgrade.ts @@ -2,24 +2,55 @@ import { Bus } from "@/bus" import { Config } from "@/config/config" import { Flag } from "@/flag/flag" import { Installation } from "@/installation" +// altimate_change start — robust upgrade notification +import semver from "semver" +import { Log } from "@/util/log" + +const log = Log.create({ service: "upgrade" }) export async function upgrade() { const config = await Config.global() const method = await Installation.method() - const latest = await Installation.latest(method).catch(() => {}) + const latest = await Installation.latest(method).catch((err) => { + log.warn("failed to fetch latest version", { error: String(err), method }) + return undefined + }) if (!latest) return if (Installation.VERSION === latest) return + // Prevent downgrade: if current version is already >= latest, skip + if ( + Installation.VERSION !== "local" && + semver.valid(Installation.VERSION) && + semver.valid(latest) && + semver.gte(Installation.VERSION, latest) + ) { + return + } + + const notify = () => Bus.publish(Installation.Event.UpdateAvailable, { version: latest }) + + // Always notify when update is available, regardless of autoupdate setting if (config.autoupdate === false || Flag.OPENCODE_DISABLE_AUTOUPDATE) { + await notify() return } if (config.autoupdate === "notify") { - await Bus.publish(Installation.Event.UpdateAvailable, { version: latest }) + await notify() + return + } + + // Can't auto-upgrade for unknown or unsupported methods — notify instead + if (method === "unknown" || method === "yarn") { + await notify() return } - if (method === "unknown") return await Installation.upgrade(method, latest) .then(() => Bus.publish(Installation.Event.Updated, { version: latest })) - .catch(() => {}) + .catch(async (err) => { + log.warn("auto-upgrade failed, notifying instead", { error: String(err), method, target: latest }) + await notify() + }) } +// altimate_change end diff --git a/packages/opencode/test/cli/upgrade-decision.test.ts b/packages/opencode/test/cli/upgrade-decision.test.ts new file mode 100644 index 0000000000..ef30314eab --- /dev/null +++ b/packages/opencode/test/cli/upgrade-decision.test.ts @@ -0,0 +1,343 @@ +import { describe, expect, test } from "bun:test" +import semver from "semver" +import { Installation } from "../../src/installation" + +/** + * Tests for the upgrade() decision logic in cli/upgrade.ts. + * + * Since upgrade() depends on Config, Bus, and Installation with side effects, + * we test the decision logic directly — the same conditions that upgrade() checks. + * This validates the fix for: silent skip on unknown method, autoupdate=false, + * failed auto-upgrade, and downgrade prevention. + */ + +// ─── Decision Logic Extracted from upgrade() ───────────────────────────────── +// These mirror the exact checks in cli/upgrade.ts so we can test every path. + +type Decision = "skip" | "notify" | "auto-upgrade" + +function upgradeDecision(input: { + latest: string | undefined + currentVersion: string + autoupdate: boolean | "notify" | undefined + disableAutoupdate: boolean + method: string +}): Decision { + const { latest, currentVersion, autoupdate, disableAutoupdate, method } = input + + if (!latest) return "skip" + if (currentVersion === latest) return "skip" + + // Prevent downgrade + if ( + currentVersion !== "local" && + semver.valid(currentVersion) && + semver.valid(latest) && + semver.gte(currentVersion, latest) + ) { + return "skip" + } + + if (autoupdate === false || disableAutoupdate) return "notify" + if (autoupdate === "notify") return "notify" + if (method === "unknown" || method === "yarn") return "notify" + + return "auto-upgrade" +} + +// ─── Tests ─────────────────────────────────────────────────────────────────── + +describe("upgrade decision logic", () => { + describe("skip: no latest version available", () => { + test("latest is undefined (network failure)", () => { + expect(upgradeDecision({ + latest: undefined, + currentVersion: "0.5.2", + autoupdate: undefined, + disableAutoupdate: false, + method: "npm", + })).toBe("skip") + }) + + test("latest is empty string", () => { + expect(upgradeDecision({ + latest: "", + currentVersion: "0.5.2", + autoupdate: undefined, + disableAutoupdate: false, + method: "npm", + })).toBe("skip") + }) + }) + + describe("skip: already up to date", () => { + test("same version string", () => { + expect(upgradeDecision({ + latest: "0.5.7", + currentVersion: "0.5.7", + autoupdate: undefined, + disableAutoupdate: false, + method: "npm", + })).toBe("skip") + }) + }) + + describe("skip: downgrade prevention", () => { + test("current version is newer than latest (canary/preview user)", () => { + expect(upgradeDecision({ + latest: "0.5.7", + currentVersion: "0.6.0", + autoupdate: undefined, + disableAutoupdate: false, + method: "npm", + })).toBe("skip") + }) + + test("current is prerelease of a newer version", () => { + expect(upgradeDecision({ + latest: "0.5.7", + currentVersion: "0.6.0-beta.1", + autoupdate: undefined, + disableAutoupdate: false, + method: "npm", + })).toBe("skip") + }) + + test("semver.gte catches equal versions even if string !== (edge case)", () => { + // This shouldn't happen in practice (both normalize), but tests the safety net + expect(upgradeDecision({ + latest: "0.5.7", + currentVersion: "0.5.7", + autoupdate: undefined, + disableAutoupdate: false, + method: "npm", + })).toBe("skip") + }) + + test("local version bypasses downgrade check", () => { + // Dev mode: VERSION="local" should NOT be caught by semver guard + expect(upgradeDecision({ + latest: "0.5.7", + currentVersion: "local", + autoupdate: undefined, + disableAutoupdate: false, + method: "npm", + })).toBe("auto-upgrade") + }) + + test("invalid semver current version bypasses downgrade check", () => { + expect(upgradeDecision({ + latest: "0.5.7", + currentVersion: "dev-build-123", + autoupdate: undefined, + disableAutoupdate: false, + method: "npm", + })).toBe("auto-upgrade") + }) + }) + + describe("notify: autoupdate disabled", () => { + test("autoupdate is false", () => { + expect(upgradeDecision({ + latest: "0.5.7", + currentVersion: "0.5.2", + autoupdate: false, + disableAutoupdate: false, + method: "npm", + })).toBe("notify") + }) + + test("OPENCODE_DISABLE_AUTOUPDATE flag is true", () => { + expect(upgradeDecision({ + latest: "0.5.7", + currentVersion: "0.5.2", + autoupdate: undefined, + disableAutoupdate: true, + method: "npm", + })).toBe("notify") + }) + + test("both autoupdate=false and flag=true", () => { + expect(upgradeDecision({ + latest: "0.5.7", + currentVersion: "0.5.2", + autoupdate: false, + disableAutoupdate: true, + method: "npm", + })).toBe("notify") + }) + + test("autoupdate is 'notify'", () => { + expect(upgradeDecision({ + latest: "0.5.7", + currentVersion: "0.5.2", + autoupdate: "notify", + disableAutoupdate: false, + method: "npm", + })).toBe("notify") + }) + }) + + describe("notify: unknown or unsupported install method", () => { + test("method is 'unknown'", () => { + expect(upgradeDecision({ + latest: "0.5.7", + currentVersion: "0.5.2", + autoupdate: undefined, + disableAutoupdate: false, + method: "unknown", + })).toBe("notify") + }) + + test("method is 'yarn' (detected but not supported for auto-upgrade)", () => { + expect(upgradeDecision({ + latest: "0.5.7", + currentVersion: "0.5.2", + autoupdate: undefined, + disableAutoupdate: false, + method: "yarn", + })).toBe("notify") + }) + + test("unknown method with autoupdate=false still notifies", () => { + expect(upgradeDecision({ + latest: "0.5.7", + currentVersion: "0.5.2", + autoupdate: false, + disableAutoupdate: false, + method: "unknown", + })).toBe("notify") + }) + }) + + describe("auto-upgrade: supported methods with autoupdate enabled", () => { + const supportedMethods = ["npm", "bun", "pnpm", "brew", "curl", "choco", "scoop"] + + for (const method of supportedMethods) { + test(`auto-upgrade for method: ${method}`, () => { + expect(upgradeDecision({ + latest: "0.5.7", + currentVersion: "0.5.2", + autoupdate: undefined, + disableAutoupdate: false, + method, + })).toBe("auto-upgrade") + }) + } + + test("autoupdate=true explicitly", () => { + expect(upgradeDecision({ + latest: "0.5.7", + currentVersion: "0.5.2", + autoupdate: true, + disableAutoupdate: false, + method: "npm", + })).toBe("auto-upgrade") + }) + }) + + describe("the reported bug: user on 0.5.2, latest is 0.5.7", () => { + test("npm install, default config → should auto-upgrade", () => { + expect(upgradeDecision({ + latest: "0.5.7", + currentVersion: "0.5.2", + autoupdate: undefined, + disableAutoupdate: false, + method: "npm", + })).toBe("auto-upgrade") + }) + + test("unknown method, default config → should notify (was silently skipped before fix)", () => { + expect(upgradeDecision({ + latest: "0.5.7", + currentVersion: "0.5.2", + autoupdate: undefined, + disableAutoupdate: false, + method: "unknown", + })).toBe("notify") + }) + + test("autoupdate=false → should notify (was silently skipped before fix)", () => { + expect(upgradeDecision({ + latest: "0.5.7", + currentVersion: "0.5.2", + autoupdate: false, + disableAutoupdate: false, + method: "npm", + })).toBe("notify") + }) + + test("DISABLE_AUTOUPDATE flag → should notify (was silently skipped before fix)", () => { + expect(upgradeDecision({ + latest: "0.5.7", + currentVersion: "0.5.2", + autoupdate: undefined, + disableAutoupdate: true, + method: "npm", + })).toBe("notify") + }) + }) + + describe("version format edge cases", () => { + test("patch version bump", () => { + expect(upgradeDecision({ + latest: "0.5.3", + currentVersion: "0.5.2", + autoupdate: undefined, + disableAutoupdate: false, + method: "npm", + })).toBe("auto-upgrade") + }) + + test("major version bump", () => { + expect(upgradeDecision({ + latest: "1.0.0", + currentVersion: "0.5.2", + autoupdate: undefined, + disableAutoupdate: false, + method: "npm", + })).toBe("auto-upgrade") + }) + + test("prerelease latest version vs stable current", () => { + // 1.0.0-beta.1 is greater than 0.5.2 + expect(upgradeDecision({ + latest: "1.0.0-beta.1", + currentVersion: "0.5.2", + autoupdate: undefined, + disableAutoupdate: false, + method: "npm", + })).toBe("auto-upgrade") + }) + + test("same major.minor, prerelease latest < current release", () => { + // 0.5.2-beta.1 is LESS than 0.5.2 per semver + expect(upgradeDecision({ + latest: "0.5.2-beta.1", + currentVersion: "0.5.2", + autoupdate: undefined, + disableAutoupdate: false, + method: "npm", + })).toBe("skip") + }) + }) +}) + +// ─── Installation.VERSION sanity ───────────────────────────────────────────── + +describe("Installation.VERSION format", () => { + test("is a non-empty string", () => { + expect(typeof Installation.VERSION).toBe("string") + expect(Installation.VERSION.length).toBeGreaterThan(0) + }) + + test("does not have v prefix", () => { + expect(Installation.VERSION.startsWith("v")).toBe(false) + }) + + test("is either 'local' or valid semver", () => { + if (Installation.VERSION !== "local") { + expect(semver.valid(Installation.VERSION)).not.toBeNull() + } + }) +}) From e8d69ee4e6601da3d5623eefd12889a7ae4d061c Mon Sep 17 00:00:00 2001 From: anandgupta42 Date: Sun, 22 Mar 2026 17:23:40 -0700 Subject: [PATCH 2/3] fix: pre-existing typecheck errors in `training-import.test.ts` - `readFile` mock return type mismatch (string vs Buffer) - `count` mock missing `context` and `rule` keys Co-Authored-By: Claude Opus 4.6 (1M context) --- packages/opencode/test/altimate/training-import.test.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/opencode/test/altimate/training-import.test.ts b/packages/opencode/test/altimate/training-import.test.ts index 847c323335..5d1fbae131 100644 --- a/packages/opencode/test/altimate/training-import.test.ts +++ b/packages/opencode/test/altimate/training-import.test.ts @@ -48,13 +48,15 @@ function setupMocks(opts: { saveSpy?.mockRestore() budgetSpy?.mockRestore() - readFileSpy = spyOn(fs, "readFile").mockImplementation(async () => opts.fileContent) + readFileSpy = spyOn(fs, "readFile").mockImplementation(async () => opts.fileContent as any) countSpy = spyOn(TrainingStore, "count").mockImplementation(async () => ({ standard: opts.currentCount ?? 0, glossary: opts.currentCount ?? 0, playbook: opts.currentCount ?? 0, naming: opts.currentCount ?? 0, pattern: opts.currentCount ?? 0, + context: opts.currentCount ?? 0, + rule: opts.currentCount ?? 0, })) saveSpy = spyOn(TrainingStore, "save").mockImplementation(async () => { if (opts.saveShouldFail) throw new Error("store write failed") From f59dee9de397487a88f029af93954e43cafc4d07 Mon Sep 17 00:00:00 2001 From: anandgupta42 Date: Sun, 22 Mar 2026 17:36:11 -0700 Subject: [PATCH 3/3] fix: wire up `ALTIMATE_CLI_DISABLE_AUTOUPDATE` env var using `altTruthy` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The documented env var `ALTIMATE_CLI_DISABLE_AUTOUPDATE` was not functional — `flag.ts` only read the legacy `OPENCODE_DISABLE_AUTOUPDATE`. Updated to use `altTruthy()` pattern matching other flags in the codebase. Found during multi-model code review (GPT 5.2 Codex, Gemini 3.1 Pro). Co-Authored-By: Claude Opus 4.6 (1M context) --- packages/opencode/src/flag/flag.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/opencode/src/flag/flag.ts b/packages/opencode/src/flag/flag.ts index a94b2cc63e..b0aae920da 100644 --- a/packages/opencode/src/flag/flag.ts +++ b/packages/opencode/src/flag/flag.ts @@ -28,7 +28,9 @@ export namespace Flag { export declare const OPENCODE_TUI_CONFIG: string | undefined export declare const OPENCODE_CONFIG_DIR: string | undefined export const OPENCODE_CONFIG_CONTENT = process.env["OPENCODE_CONFIG_CONTENT"] - export const OPENCODE_DISABLE_AUTOUPDATE = truthy("OPENCODE_DISABLE_AUTOUPDATE") + // altimate_change start — support ALTIMATE_CLI_DISABLE_AUTOUPDATE env var (documented name) + export const OPENCODE_DISABLE_AUTOUPDATE = altTruthy("ALTIMATE_CLI_DISABLE_AUTOUPDATE", "OPENCODE_DISABLE_AUTOUPDATE") + // altimate_change end export const OPENCODE_DISABLE_PRUNE = truthy("OPENCODE_DISABLE_PRUNE") // altimate_change start - global opt-out for Altimate Memory export const ALTIMATE_DISABLE_MEMORY = altTruthy("ALTIMATE_DISABLE_MEMORY", "OPENCODE_DISABLE_MEMORY")