diff --git a/frontend/src/routes/downloads.tsx b/frontend/src/routes/downloads.tsx
index 90e14e19..32e78a6c 100644
--- a/frontend/src/routes/downloads.tsx
+++ b/frontend/src/routes/downloads.tsx
@@ -5,14 +5,56 @@ import { MarketingHeader } from "@/components/MarketingHeader";
import { Monitor, Terminal, Globe, Smartphone } from "lucide-react";
import { Apple } from "@/components/icons/Apple";
import { Android } from "@/components/icons/Android";
+import { useState, useEffect } from "react";
+import { getLatestDownloadInfo } from "@/utils/githubRelease";
import packageJson from "../../package.json";
-// Get version from package.json
-const APP_VERSION = packageJson.version;
-const CURRENT_VERSION = `v${APP_VERSION}`;
-const BASE_DOWNLOAD_URL = `https://github.com/OpenSecretCloud/Maple/releases/download/${CURRENT_VERSION}`;
+interface DownloadUrls {
+ macOS: string;
+ linuxAppImage: string;
+ linuxDeb: string;
+ linuxRpm: string;
+}
+
+// Fallback to package.json version if GitHub API fails
+const FALLBACK_VERSION = packageJson.version;
+const FALLBACK_TAG = `v${FALLBACK_VERSION}`;
+const FALLBACK_BASE_URL = `https://github.com/OpenSecretCloud/Maple/releases/download/${FALLBACK_TAG}`;
+const FALLBACK_URLS: DownloadUrls = {
+ macOS: `${FALLBACK_BASE_URL}/Maple_${FALLBACK_VERSION}_universal.dmg`,
+ linuxAppImage: `${FALLBACK_BASE_URL}/Maple_${FALLBACK_VERSION}_amd64.AppImage`,
+ linuxDeb: `${FALLBACK_BASE_URL}/Maple_${FALLBACK_VERSION}_amd64.deb`,
+ linuxRpm: `${FALLBACK_BASE_URL}/Maple-${FALLBACK_VERSION}-1.x86_64.rpm`,
+};
function DownloadPage() {
+ const [downloadUrls, setDownloadUrls] = useState