From c91a286ffe272343480ea5bc472e470aeb69ab9a Mon Sep 17 00:00:00 2001 From: choibk Date: Sun, 25 Jan 2026 00:44:37 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B2=84=EC=A0=84=20=EA=B4=80=EB=A6=AC=20?= =?UTF-8?q?=EC=8B=9C=EC=8A=A4=ED=85=9C=20=EC=B5=9C=EC=A2=85=20=EC=95=88?= =?UTF-8?q?=EC=A0=95=ED=99=94:=20=EB=B9=84=EA=B5=90=20=EB=A1=9C=EC=A7=81?= =?UTF-8?q?=20=EA=B0=95=ED=99=94=20=EB=B0=8F=20=ED=9E=88=EC=8A=A4=ED=86=A0?= =?UTF-8?q?=EB=A6=AC=20=ED=95=84=ED=84=B0=EB=A7=81=20=EC=A0=95=EC=83=81?= =?UTF-8?q?=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- server/package.json | 2 +- server/routes/system.js | 26 +++++++++++++------------- src/platform/pages/VersionPage.tsx | 2 +- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/package.json b/package.json index 84c6481..9c16bcf 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "smartims", "private": true, - "version": "0.4.0", + "version": "0.3.5", "type": "module", "scripts": { "dev": "vite", diff --git a/server/package.json b/server/package.json index dc436c0..ebcaa92 100644 --- a/server/package.json +++ b/server/package.json @@ -1,6 +1,6 @@ { "name": "server", - "version": "0.4.0", + "version": "0.3.5", "description": "", "main": "index.js", "scripts": { diff --git a/server/routes/system.js b/server/routes/system.js index 1d6fed0..4c71250 100644 --- a/server/routes/system.js +++ b/server/routes/system.js @@ -467,7 +467,7 @@ router.get('/version/remote', isAuthenticated, hasRole('admin'), async (req, res try { const packageJsonPath = path.join(__dirname, '../package.json'); const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')); - const currentVersion = packageJson.version; + const currentVersion = packageJson.version.replace(/^v/, ''); // Prepare git fetch command with auth if available const auth = await getGiteaAuth(); @@ -530,30 +530,30 @@ router.get('/version/remote', isAuthenticated, hasRole('admin'), async (req, res }; }).filter(Boolean); - // Version Comparison Helper - const compareVersions = (v1, v2) => { - const parts1 = v1.split('.').map(Number); - const parts2 = v2.split('.').map(Number); + const parseV = (v) => (v || '').replace(/^v/, '').split('.').map(n => parseInt(n) || 0); + const compare = (v1, v2) => { + const p1 = parseV(v1); + const p2 = parseV(v2); for (let i = 0; i < 3; i++) { - if (parts1[i] > parts2[i]) return 1; - if (parts1[i] < parts2[i]) return -1; + const n1 = p1[i] || 0; + const n2 = p2[i] || 0; + if (n1 > n2) return 1; + if (n1 < n2) return -1; } return 0; }; - // Filter 1: History is ONLY versions <= current - const history = allTags.filter(t => compareVersions(t.version, currentVersion) <= 0); - - // Filter 2: Latest is the absolute newest tag available (could be > current) + const history = allTags.filter(t => compare(t.version, currentVersion) <= 0); const latestFromRemote = allTags[0] || null; - const needsUpdate = latestFromRemote ? (compareVersions(latestFromRemote.version, currentVersion) > 0) : false; + const needsUpdate = latestFromRemote ? (compare(latestFromRemote.version, currentVersion) > 0) : false; res.json({ current: currentVersion, latest: latestFromRemote ? `v${latestFromRemote.version}` : null, needsUpdate: needsUpdate, latestInfo: needsUpdate ? latestFromRemote : null, - history: history + history: history, + debug: { path: packageJsonPath } }); }); }); diff --git a/src/platform/pages/VersionPage.tsx b/src/platform/pages/VersionPage.tsx index 802531c..e6713a7 100644 --- a/src/platform/pages/VersionPage.tsx +++ b/src/platform/pages/VersionPage.tsx @@ -114,7 +114,7 @@ export function VersionPage() { const buildDate = '2026-01-25'; // Check if update is needed based on API-supplied needsUpdate flag - const needsUpdate = remoteInfo?.needsUpdate || false; + const needsUpdate = !!remoteInfo?.needsUpdate; return (