feat(desktop): build Windows arm64 alongside x64

Multi-arch Windows build in one electron-builder pass, with the website
self-healing across the rename. Asset names go from
`Paseo-Setup-${version}.exe` to `Paseo-Setup-${version}-{x64,arm64}.exe`.

The website now reads the actual installer filename off the latest
GitHub release, so legacy single-arch releases keep rendering a single
"Download" pill while dual-arch releases promote to "Intel / x64" +
"ARM64" automatically. No homepage code change needed when ARM ships.
This commit is contained in:
Mohamed Boudra
2026-04-30 11:39:56 +07:00
parent a7e1753834
commit 9c3c0f9140
7 changed files with 77 additions and 20 deletions
+7 -1
View File
@@ -6,13 +6,19 @@ import { getStarCount } from "~/stars";
interface ReleaseContext {
version: string;
windowsX64Asset: string | null;
windowsArm64Asset: string | null;
}
interface StarsContext {
stars: string;
}
const ReleaseCtx = createContext<ReleaseContext>({ version: "" });
const ReleaseCtx = createContext<ReleaseContext>({
version: "",
windowsX64Asset: null,
windowsArm64Asset: null,
});
const StarsCtx = createContext<StarsContext>({ stars: "" });
const PLAUSIBLE_INIT_SCRIPT = {
+8 -3
View File
@@ -33,8 +33,9 @@ const homebrewTrigger = (
);
function Download() {
const { version } = useRelease();
const urls = downloadUrls(version);
const release = useRelease();
const { version } = release;
const urls = downloadUrls(release);
return (
<div className="min-h-screen bg-background">
@@ -130,7 +131,11 @@ function Download() {
<span className="font-medium">Windows</span>
</div>
<div className="flex flex-wrap gap-2">
<DownloadPill href={urls.windowsExe} label="Download" />
<DownloadPill
href={urls.windowsExeX64}
label={urls.windowsExeArm64 ? "Intel / x64" : "Download"}
/>
{urls.windowsExeArm64 && <DownloadPill href={urls.windowsExeArm64} label="ARM64" />}
</div>
</div>