diff --git a/src/lib/components/CliVersion.svelte b/src/lib/components/CliVersion.svelte index affb99a..bfc6c5f 100644 --- a/src/lib/components/CliVersion.svelte +++ b/src/lib/components/CliVersion.svelte @@ -2,15 +2,39 @@ import { invoke } from "@tauri-apps/api/core"; import { onMount } from "svelte"; - let version = $state("Loading..."); + const SUPPORTED_CLI_VERSION = "2.1.33"; + + let installedVersion = $state("Loading..."); + + function compareVersions(a: string, b: string): number { + const aParts = a.split(".").map(Number); + const bParts = b.split(".").map(Number); + for (let i = 0; i < Math.max(aParts.length, bParts.length); i++) { + const aVal = aParts[i] ?? 0; + const bVal = bParts[i] ?? 0; + if (aVal > bVal) return 1; + if (aVal < bVal) return -1; + } + return 0; + } + + let supportedBadgeState = $derived.by(() => { + if (installedVersion === "Loading..." || installedVersion === "Unknown") { + return "neutral"; + } + const cmp = compareVersions(installedVersion, SUPPORTED_CLI_VERSION); + if (cmp > 0) return "ahead"; + if (cmp < 0) return "behind"; + return "current"; + }); async function fetchVersion() { try { const result = await invoke("get_claude_version"); - version = result; + installedVersion = result; } catch (error) { console.error("Failed to get Claude CLI version:", error); - version = "Unknown"; + installedVersion = "Unknown"; } } @@ -19,25 +43,50 @@ }); -
- - - - - CLI {version} +
+
+ + + + + CLI {installedVersion} +
+ +
+ + + + Supported {SUPPORTED_CLI_VERSION} +