Improve updater version selection and surface release dates

This commit is contained in:
Aaron
2025-12-14 17:16:52 -05:00
parent b70f4c5f3f
commit 250ea2e00d
4 changed files with 193 additions and 33 deletions

View File

@@ -18,6 +18,8 @@ export function initReleaseUI({ showToast, showBusy, hideBusy, confirmAction, lo
const releaseClose = document.getElementById("releaseClose");
const releaseCurrent = document.getElementById("releaseCurrent");
const releaseLatest = document.getElementById("releaseLatest");
const releaseCurrentDate = document.getElementById("releaseCurrentDate");
const releaseLatestDate = document.getElementById("releaseLatestDate");
const releaseStatusMsg = document.getElementById("releaseStatusMsg");
const releaseProgress = document.getElementById("releaseProgress");
const releaseCheckBtn = document.getElementById("releaseCheckBtn");
@@ -47,6 +49,21 @@ export function initReleaseUI({ showToast, showBusy, hideBusy, confirmAction, lo
const logger = createReleaseLogger(logUi);
logger.attach(releaseLog);
const fmtDate = (iso) => {
if (!iso) return "—";
try {
const d = new Date(iso);
if (Number.isNaN(d.getTime())) return "—";
return d.toLocaleDateString(undefined, {
year: "numeric",
month: "short",
day: "numeric",
});
} catch (e) {
return "—";
}
};
function setReleaseChip(state) {
if (!releaseFlagTop) return;
releaseFlagTop.textContent = "Pi-Kit: n/a";
@@ -69,7 +86,9 @@ export function initReleaseUI({ showToast, showBusy, hideBusy, confirmAction, lo
const msg = shorten(message, 80) || "";
releaseFlagTop.title = msg || "Pi-Kit release status";
if (releaseStatusMsg) {
releaseStatusMsg.textContent = status === "update_available" ? msg || "Update available" : "";
const isUrlMsg = msg && /^https?:/i.test(msg);
const safeMsg = isUrlMsg ? "Update available" : msg;
releaseStatusMsg.textContent = status === "update_available" ? safeMsg || "Update available" : "";
releaseStatusMsg.classList.remove("error");
}
if (releaseLogStatus) {
@@ -133,6 +152,9 @@ export function initReleaseUI({ showToast, showBusy, hideBusy, confirmAction, lo
auto_check = false,
progress = null,
channel = "dev",
current_release_date = null,
latest_release_date = null,
changelog_url = null,
} = data || {};
releaseChannel = channel || "dev";
if (releaseChannelToggle) releaseChannelToggle.checked = releaseChannel === "dev";
@@ -143,14 +165,17 @@ export function initReleaseUI({ showToast, showBusy, hideBusy, confirmAction, lo
lastReleaseLogKey = key;
}
releaseLastFetched = now;
if (status === "update_available" && message && message.startsWith("http")) {
lastChangelogUrl = message;
} else if (latest_version) {
lastChangelogUrl = changelog_url || null;
if (!lastChangelogUrl && status === "update_available" && message && message.startsWith("http")) {
lastChangelogUrl = message;
} else if (!lastChangelogUrl && latest_version) {
lastChangelogUrl = `https://git.44r0n.cc/44r0n7/pi-kit/releases/download/v${latest_version}/CHANGELOG-${latest_version}.txt`;
}
setReleaseChip(data);
if (releaseCurrent) releaseCurrent.textContent = current_version;
if (releaseLatest) releaseLatest.textContent = latest_version;
if (releaseCurrentDate) releaseCurrentDate.textContent = fmtDate(current_release_date);
if (releaseLatestDate) releaseLatestDate.textContent = fmtDate(latest_release_date);
if (releaseAutoCheck) releaseAutoCheck.checked = !!auto_check;
if (releaseProgress) releaseProgress.textContent = "";
if (status === "in_progress" && progress) {
@@ -317,8 +342,11 @@ export function initReleaseUI({ showToast, showBusy, hideBusy, confirmAction, lo
releaseChangelogBtn?.addEventListener("click", async () => {
const state = window.__lastReleaseState || {};
const { latest_version, message } = state;
const url = (message && message.startsWith("http") ? message : null) || lastChangelogUrl;
const { latest_version, message, changelog_url } = state;
const url =
changelog_url ||
(message && message.startsWith("http") ? message : null) ||
lastChangelogUrl;
if (!url) {
showToast("No changelog URL available", "error");
return;

View File

@@ -4,6 +4,9 @@
"last_check": "2025-12-10T22:00:00Z",
"status": "update_available",
"message": "New UI polish and bug fixes.",
"changelog_url": "https://git.44r0n.cc/44r0n7/pi-kit/releases/download/v0.1.1-mock/CHANGELOG-0.1.1-mock.txt",
"latest_release_date": "2025-12-09T18:00:00Z",
"current_release_date": "2025-12-01T17:00:00Z",
"auto_check": true,
"in_progress": false,
"progress": null

View File

@@ -148,10 +148,12 @@
<div>
<p class="hint quiet">Current version</p>
<h3 id="releaseCurrent">n/a</h3>
<p class="hint quiet" id="releaseCurrentDate"></p>
</div>
<div class="align-right">
<p class="hint quiet">Latest available</p>
<h3 id="releaseLatest"></h3>
<p class="hint quiet" id="releaseLatestDate"></p>
<p id="releaseStatusMsg" class="hint status-msg"></p>
<button id="releaseChangelogBtn" class="ghost small" title="View changelog">Changelog</button>
</div>