diff --git a/packages/landing/app/download/page.tsx b/packages/landing/app/download/page.tsx new file mode 100644 index 000000000..dc79abd3e --- /dev/null +++ b/packages/landing/app/download/page.tsx @@ -0,0 +1,223 @@ +import { SiteFooter } from "../../components/site-footer"; +import { SiteNav } from "../../components/site-nav"; +import { getGithubData } from "../../lib/github"; + +export const metadata = { + title: "OpenWork - Download", + description: + "Download OpenWork desktop for macOS, Windows, and Linux. Includes AUR install instructions and direct package downloads.", +}; + +export default async function Download() { + const github = await getGithubData(); + const releaseLabel = github.releaseTag || "latest"; + const releaseUrl = github.releaseUrl; + + return ( +
+ + +
+
+
+
+ OpenWork desktop +
+

+ Download OpenWork +

+

+ Install OpenWork on macOS, Windows, or Linux. Pick the package that + matches your distro and architecture. +

+

+ Latest stable release: + + {releaseLabel} + +

+
+ +
+ +

macOS

+

Apple Silicon and Intel builds

+
+ +

Windows

+

x64 MSI installer

+
+ +

Linux

+

AUR, .deb, and .rpm options

+
+
+ +
+

macOS

+

+ Download the DMG that matches your Mac. +

+ +
+
+

Apple Silicon (M-series)

+

Recommended for M1, M2, M3, and M4 chips.

+ + Download .dmg + +
+ +
+

Intel (x64)

+

For Intel-based Macs.

+ + Download .dmg + +
+
+
+ +
+ +
+

Windows

+

+ OpenWork for Windows is available as an x64 MSI installer. +

+ + Download Windows x64 (.msi) + +
+ +
+ +
+

Linux

+

+ Install from AUR on Arch-based distributions, or download packages + directly for Ubuntu/Debian and Fedora/RHEL/openSUSE. +

+ +
+
+

Arch Linux (AUR)

+

+ Install and keep OpenWork updated via the Arch User Repository. +

+
+                  yay -S openwork
+                
+

+ Prefer paru? paru -S openwork +

+ + View package on AUR + +
+ +
+

Ubuntu / Debian (.deb)

+

+ Download the package for your architecture. +

+ +
+ +
+

Fedora / RHEL / openSUSE (.rpm)

+

+ Download an RPM package for x64 or arm64 systems. +

+ +
+
+ +

+ Need another format? + + Browse all release assets + + . +

+
+ + +
+
+
+ ); +} diff --git a/packages/landing/app/page.tsx b/packages/landing/app/page.tsx index 288011e07..209c04da5 100644 --- a/packages/landing/app/page.tsx +++ b/packages/landing/app/page.tsx @@ -64,18 +64,14 @@ export default async function Home() {
Windows Alpha Linux Alpha @@ -151,18 +147,14 @@ export default async function Home() {
Windows Alpha Linux Alpha diff --git a/packages/landing/components/site-nav.tsx b/packages/landing/components/site-nav.tsx index 3564a262a..91291ca19 100644 --- a/packages/landing/components/site-nav.tsx +++ b/packages/landing/components/site-nav.tsx @@ -3,7 +3,7 @@ import Link from "next/link"; type Props = { stars: string; callUrl?: string; - active?: "home" | "enterprise" | "den"; + active?: "home" | "download" | "enterprise" | "den"; }; export function SiteNav(props: Props) { @@ -27,6 +27,9 @@ export function SiteNav(props: Props) { FAQ + + Download + Enterprise diff --git a/packages/landing/lib/github.ts b/packages/landing/lib/github.ts index a28a35571..b91a86503 100644 --- a/packages/landing/lib/github.ts +++ b/packages/landing/lib/github.ts @@ -103,17 +103,50 @@ export const getGithubData = async () => { }); const assets = Array.isArray(pick?.assets) ? pick.assets : []; + const releaseUrl = pick?.html_url || FALLBACK_RELEASE; const dmg = selectAsset(assets, [".dmg"]); const exe = selectAsset(assets, [".exe", ".msi"], ["win", "windows"]); const appImage = selectAsset(assets, [".appimage"], ["linux"]); + const macosApple = selectAsset(assets, [".dmg"], ["darwin-aarch64"]); + const macosIntel = selectAsset(assets, [".dmg"], ["darwin-x64"]); + const windowsX64 = + selectAsset(assets, [".msi", ".exe"], ["windows-x64"]) || exe; + + const linuxDebX64 = selectAsset(assets, [".deb"], ["linux-amd64", "linux-x64"]); + const linuxDebArm64 = selectAsset(assets, [".deb"], ["linux-arm64", "linux-aarch64"]); + const linuxRpmX64 = selectAsset(assets, [".rpm"], ["linux-x86_64", "linux-amd64"]); + const linuxRpmArm64 = selectAsset(assets, [".rpm"], ["linux-aarch64", "linux-arm64"]); + return { stars, - releaseUrl: pick?.html_url || FALLBACK_RELEASE, + releaseUrl, + releaseTag: pick?.tag_name || "", downloads: { macos: dmg?.browser_download_url || FALLBACK_RELEASE, windows: exe?.browser_download_url || FALLBACK_RELEASE, - linux: appImage?.browser_download_url || FALLBACK_RELEASE + linux: + appImage?.browser_download_url || + linuxDebX64?.browser_download_url || + linuxRpmX64?.browser_download_url || + FALLBACK_RELEASE + }, + installers: { + macos: { + appleSilicon: macosApple?.browser_download_url || dmg?.browser_download_url || releaseUrl, + intel: macosIntel?.browser_download_url || dmg?.browser_download_url || releaseUrl + }, + windows: { + x64: windowsX64?.browser_download_url || releaseUrl + }, + linux: { + aur: "https://aur.archlinux.org/packages/openwork", + debX64: linuxDebX64?.browser_download_url || releaseUrl, + debArm64: linuxDebArm64?.browser_download_url || releaseUrl, + rpmX64: linuxRpmX64?.browser_download_url || releaseUrl, + rpmArm64: linuxRpmArm64?.browser_download_url || releaseUrl, + appImage: appImage?.browser_download_url || releaseUrl + } } }; };