diff --git a/src/hooks/useVersionCheck.js b/src/hooks/useVersionCheck.js index 5951537..5ca86b4 100644 --- a/src/hooks/useVersionCheck.js +++ b/src/hooks/useVersionCheck.js @@ -1,7 +1,26 @@ -// hooks/useVersionCheck.js import { useState, useEffect } from 'react'; import { version } from '../../package.json'; +/** + * Compare two semantic version strings + * Works only with numeric versions separated by dots (e.g. "1.2.3") + * @param {string} v1 + * @param {string} v2 + * @returns positive if v1 > v2, negative if v1 < v2, 0 if equal + */ +const compareVersions = (v1, v2) => { + const parts1 = v1.split('.').map(Number); + const parts2 = v2.split('.').map(Number); + + for (let i = 0; i < Math.max(parts1.length, parts2.length); i++) { + const p1 = parts1[i] || 0; + const p2 = parts2[i] || 0; + if (p1 !== p2) return p1 - p2; + } + return 0; +}; + + export const useVersionCheck = (owner, repo) => { const [updateAvailable, setUpdateAvailable] = useState(false); const [latestVersion, setLatestVersion] = useState(null); @@ -17,7 +36,8 @@ export const useVersionCheck = (owner, repo) => { if (data.tag_name) { const latest = data.tag_name.replace(/^v/, ''); setLatestVersion(latest); - setUpdateAvailable(version !== latest); + // Only show update if latest version is actually newer + setUpdateAvailable(compareVersions(latest, version) > 0); // Store release information setReleaseInfo({