feat(coding-agent): show update notes (#4724)

This commit is contained in:
Armin Ronacher
2026-05-19 12:08:13 +02:00
committed by GitHub
parent 2787b601d7
commit f4f0ac7ada
4 changed files with 97 additions and 23 deletions

View File

@@ -6,6 +6,7 @@ const DEFAULT_VERSION_CHECK_TIMEOUT_MS = 10000;
export interface LatestPiRelease {
version: string;
packageName?: string;
note?: string;
}
interface ParsedVersion {
@@ -67,13 +68,22 @@ export async function getLatestPiRelease(
});
if (!response.ok) return undefined;
const data = (await response.json()) as { packageName?: unknown; version?: unknown };
const data = (await response.json()) as {
packageName?: unknown;
version?: unknown;
note?: unknown;
};
if (typeof data.version !== "string" || !data.version.trim()) {
return undefined;
}
const packageName =
typeof data.packageName === "string" && data.packageName.trim() ? data.packageName.trim() : undefined;
return { version: data.version.trim(), packageName };
const note = typeof data.note === "string" && data.note.trim() ? data.note.trim() : undefined;
return {
version: data.version.trim(),
packageName,
...(note ? { note } : {}),
};
}
export async function getLatestPiVersion(
@@ -83,11 +93,11 @@ export async function getLatestPiVersion(
return (await getLatestPiRelease(currentVersion, options))?.version;
}
export async function checkForNewPiVersion(currentVersion: string): Promise<string | undefined> {
export async function checkForNewPiVersion(currentVersion: string): Promise<LatestPiRelease | undefined> {
try {
const latestVersion = await getLatestPiVersion(currentVersion);
if (latestVersion && isNewerPackageVersion(latestVersion, currentVersion)) {
return latestVersion;
const latestRelease = await getLatestPiRelease(currentVersion);
if (latestRelease && isNewerPackageVersion(latestRelease.version, currentVersion)) {
return latestRelease;
}
return undefined;
} catch {