From 6c92708b87ae433a16425cf8524fd205b11c0e8c Mon Sep 17 00:00:00 2001 From: Erwan Leboucher Date: Mon, 27 Jul 2026 08:48:13 +0200 Subject: [PATCH] fix(ios): make AltStore/SideStore register nightly updates Nightly build version was minute-resolution, so same-minute commits or identical rebuilds produced the same CFBundleVersion. AltStore and SideStore detect updates by exact string-equality on CFBundleVersion, so a collision meant no update was shown. Bump to second resolution. Add the top-level identifier SideStore requires to link the source to installed apps; AltStore ignores it. --- .github/scripts/release-meta.mjs | 4 +++- altstore-source.json | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/scripts/release-meta.mjs b/.github/scripts/release-meta.mjs index 4eefcacae6..3cd91e0894 100644 --- a/.github/scripts/release-meta.mjs +++ b/.github/scripts/release-meta.mjs @@ -17,9 +17,11 @@ export function computeNightlyVersion(baseVersion, timestamp = new Date()) { const d = String(timestamp.getUTCDate()).padStart(2, '0'); const h = String(timestamp.getUTCHours()).padStart(2, '0'); const min = String(timestamp.getUTCMinutes()).padStart(2, '0'); + const sec = String(timestamp.getUTCSeconds()).padStart(2, '0'); const [, major, minor, patch] = match; - return `${major}.${minor}.${Number(patch) + 1}-nightly.${y}${m}${d}${h}${min}`; + // Second resolution so same-minute commits get distinct build versions. + return `${major}.${minor}.${Number(patch) + 1}-nightly.${y}${m}${d}${h}${min}${sec}`; } export function nightlyVersion() { diff --git a/altstore-source.json b/altstore-source.json index bb715c6b25..c6eef46918 100644 --- a/altstore-source.json +++ b/altstore-source.json @@ -1,5 +1,6 @@ { "name": "Sable", + "identifier": "moe.sable.client.source", "subtitle": "Sable for iOS", "description": "Sable iOS nightly builds for AltStore and SideStore.", "iconURL": "https://raw.githubusercontent.com/SableClient/Sable/dev/src-tauri/icons/icon.png",