Skip to content

Commit 023030f

Browse files
authored
fix: use semver comparison for version update checks (#1868)
1 parent 02d5526 commit 023030f

File tree

4 files changed

+6978
-2443
lines changed

4 files changed

+6978
-2443
lines changed

components/Versions.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -257,14 +257,14 @@ async function fetchReleases() {
257257
258258
// Upgrade handlers
259259
async function handleFrontendUpgrade() {
260-
if (upgradingUI.value) return
260+
if (upgradingUI.value || !frontendRelease.value?.isUpdateAvailable) return
261261
262262
await configActions.upgradeUIAPI()
263263
window.location.reload()
264264
}
265265
266266
async function handleBackendUpgrade() {
267-
if (upgradingBackend.value) return
267+
if (upgradingBackend.value || !backendRelease.value?.isUpdateAvailable) return
268268
269269
await configActions.upgradeBackendAPI()
270270
window.location.reload()

composables/useApi.ts

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import type {
88
RuleProvider,
99
} from '~/types'
1010
import ky from 'ky'
11+
import semver from 'semver'
1112
import { useMockData } from './useMockData'
1213

1314
// Mock mode support
@@ -409,7 +410,10 @@ export async function frontendReleaseAPI(currentVersion: string) {
409410
.json<ReleaseAPIResponse>()
410411

411412
return {
412-
isUpdateAvailable: tag_name !== currentVersion,
413+
isUpdateAvailable: semver.gt(
414+
semver.coerce(tag_name) || '0.0.0',
415+
semver.coerce(currentVersion) || '0.0.0',
416+
),
413417
changelog: body,
414418
}
415419
}
@@ -450,13 +454,16 @@ export async function backendReleaseAPI(currentVersion: string) {
450454
return { isUpdateAvailable: false }
451455
}
452456

453-
// Stable version (e.g. "v1.19.9") - compare tag_name directly
457+
// Stable version (e.g. "v1.19.9") - compare using semver
454458
const { tag_name, body } = await githubAPI
455459
.get(`${repositoryURL}/releases/latest`)
456460
.json<ReleaseAPIResponse>()
457461

458462
return {
459-
isUpdateAvailable: tag_name !== currentVersion,
463+
isUpdateAvailable: semver.gt(
464+
semver.coerce(tag_name) || '0.0.0',
465+
semver.coerce(currentVersion) || '0.0.0',
466+
),
460467
changelog: body,
461468
}
462469
}

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@
7070
"playwright": "^1.58.2",
7171
"prettier": "^3.8.1",
7272
"prettier-plugin-tailwindcss": "^0.7.2",
73+
"semver": "^7.7.4",
7374
"sort-package-json": "^3.6.1",
7475
"sortablejs": "^1.15.6",
7576
"tailwind-merge": "^3.4.0",
@@ -96,6 +97,7 @@
9697
}
9798
},
9899
"devDependencies": {
100+
"@types/semver": "^7.7.1",
99101
"@vitest/coverage-v8": "^4.0.18",
100102
"jsdom": "^28.0.0"
101103
}

0 commit comments

Comments
 (0)