diff --git a/src/resources/extensions/gsd/commands.ts b/src/resources/extensions/gsd/commands.ts index 1a1d17f27..82270e32e 100644 --- a/src/resources/extensions/gsd/commands.ts +++ b/src/resources/extensions/gsd/commands.ts @@ -2283,9 +2283,20 @@ Examples: // ─── Self-update handler ──────────────────────────────────────────────────── +function compareSemverLocal(a: string, b: string): number { + const pa = a.split('.').map(Number) + const pb = b.split('.').map(Number) + for (let i = 0; i < Math.max(pa.length, pb.length); i++) { + const va = pa[i] || 0 + const vb = pb[i] || 0 + if (va > vb) return 1 + if (va < vb) return -1 + } + return 0 +} + async function handleUpdate(ctx: ExtensionCommandContext): Promise { const { execSync } = await import("node:child_process"); - const { compareSemver } = await import("../../../update-check.js"); const NPM_PACKAGE = "gsd-pi"; const current = process.env.GSD_VERSION || "0.0.0"; @@ -2303,7 +2314,7 @@ async function handleUpdate(ctx: ExtensionCommandContext): Promise { return; } - if (compareSemver(latest, current) <= 0) { + if (compareSemverLocal(latest, current) <= 0) { ctx.ui.notify(`Already up to date (v${current}).`, "info"); return; }