Problem
parseVersion() in src/services/update-check.ts only handles 3-part versions (X.Y.Z). The GitHub release tags use a 4-part format (v0.1.8.0 or v0.1.8.1), which causes parseVersion to return null and isNewer() to silently return false. No update notice is ever shown.
Root cause
// parseVersion("v0.1.8.0") → clean = "0.1.8.0" → parts.length === 4 → returns null
const parts = clean.split('.').map(Number);
if (parts.length !== 3 || ...) return null;
Fix
Update parseVersion to accept both 3-part and 4-part versions, comparing all available parts in order:
function parseVersion(v: string): number[] | null {
const clean = v.replace(/^v/, '').split('_')[0];
const parts = clean.split('.').map(Number);
if (parts.length < 3 || parts.some(n => isNaN(n))) return null;
return parts;
}
function isNewer(candidate: string, current: string): boolean {
const c = parseVersion(candidate);
const i = parseVersion(current);
if (!c || !i) return false;
const len = Math.max(c.length, i.length);
for (let k = 0; k < len; k++) {
const cv = c[k] ?? 0;
const iv = i[k] ?? 0;
if (cv !== iv) return cv > iv;
}
return false;
}
This handles v0.1.8 vs v0.1.8.0 (equal), v0.1.8.1 vs v0.1.8 (newer), and remains backward-compatible with 3-part tags.
Problem
parseVersion()insrc/services/update-check.tsonly handles 3-part versions (X.Y.Z). The GitHub release tags use a 4-part format (v0.1.8.0orv0.1.8.1), which causesparseVersionto returnnullandisNewer()to silently returnfalse. No update notice is ever shown.Root cause
Fix
Update
parseVersionto accept both 3-part and 4-part versions, comparing all available parts in order:This handles
v0.1.8vsv0.1.8.0(equal),v0.1.8.1vsv0.1.8(newer), and remains backward-compatible with 3-part tags.