• Checks the app version status (stable, beta, development) by comparing the current version to the latest stable and prerelease versions on GitHub.

    Returns Promise<AppVersionStatus>

    A promise that resolves to the app version status.

    If the GitHub API request fails.

    const status = await getAppVersionStatus();
    if (status.status === 'stable') {
    // ...
    }
    export async function getAppVersionStatus(): Promise<AppVersionStatus> {
    const currentVersion = getAppVersion();
    try {
    // Fetch all releases (not just latest)
    const response = await fetch(
    "https://api.github.com/repos/RLAlpha49/KenmeiToAnilist/releases?per_page=20",
    );
    if (!response.ok) throw new Error("Failed to fetch releases");
    const releases: GitHubRelease[] = await response.json();
    // Find the latest stable (not draft, not prerelease)
    const stableRelease = releases.find((r) => !r.draft && !r.prerelease);
    // Find the latest prerelease (not draft, prerelease)
    const betaRelease = releases.find((r) => !r.draft && r.prerelease);
    // Normalize version tags (remove leading v)
    const stableTag = stableRelease?.tag_name?.replace(/^v/, "");
    const betaTag = betaRelease?.tag_name?.replace(/^v/, "");
    // Compare current version
    if (stableTag && currentVersion === stableTag && stableRelease) {
    return {
    status: "stable",
    latestVersion: stableTag,
    releaseUrl: stableRelease.html_url,
    };
    }
    if (betaTag && currentVersion === betaTag && betaRelease) {
    return {
    status: "beta",
    latestVersion: stableTag || betaTag,
    releaseUrl: betaRelease.html_url,
    };
    }
    // If neither, it's a dev build
    return {
    status: "development",
    latestVersion: stableTag || betaTag || "",
    releaseUrl: stableRelease?.html_url || betaRelease?.html_url || "",
    };
    } catch {
    // Fallback: treat as development if error
    return {
    status: "development",
    latestVersion: "",
    releaseUrl: "",
    };
    }
    }