Improve updater version selection and surface release dates
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user