From f0b0340ef13c43081d955f1748e584196c0d067c Mon Sep 17 00:00:00 2001 From: Samuel Lison Date: Fri, 24 Jul 2026 15:51:01 +1000 Subject: [PATCH] feat(download): point at the live Mac App Store listing (#241) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The FediHome macOS app is out of App Store review and live, so the download surface should link to it instead of showing "coming soon". The page already rendered the App Store button whenever macosAppStoreUrl was set and fell back to a placeholder when empty — it was empty only because the listing didn't exist yet. So this just gives it a real default, exactly the way macosReleaseUrl already defaults to the app's GitHub releases: there is one FediHome macOS app, and every instance that enables the download page should point at it. macosEnabled stays false by default, so the blast radius is only opted-in instances (the demo). The URL is region-neutral (no /au/, no legacy ?mt=12) so Apple redirects each visitor to their own storefront — this default ships worldwide, so a country-locked link would land everyone in one country's store first. Updates the now-stale "coming soon / until the listing is approved" copy in the page comment, .env.example and docs/configuration.md to match. The placeholder branch stays in the page, harmless, for anyone who explicitly clears the URL. Co-Authored-By: Claude Opus 4.8 --- .env.example | 9 +++++---- CHANGELOG.md | 1 + docs/configuration.md | 6 +++--- site.config.ts | 13 +++++++++---- src/app/(public)/download/page.tsx | 4 ++-- 5 files changed, 20 insertions(+), 13 deletions(-) diff --git a/.env.example b/.env.example index 83ecb45..9f1df4e 100644 --- a/.env.example +++ b/.env.example @@ -110,12 +110,13 @@ FEDI_DOMAIN=example.com # When enabled, a "Download" nav link, a homepage hero CTA, and a /download page # appear — a marketing surface for the FediHome macOS app. Off by default (a # personal instance isn't advertising an app it may not use). Used by the demo. -# The release URL defaults to the app repo's GitHub Releases "latest" (always -# the newest notarized build). The App Store URL is an empty slot until the -# listing is approved. +# Both URLs already default to the project's own app, so you only need to set +# these to point at a fork/rebuild: the release URL tracks the app repo's GitHub +# Releases "latest" (newest notarized build), and the App Store URL is the live +# listing (region-neutral, so Apple redirects each visitor to their storefront). # DOWNLOAD_MACOS_ENABLED=true # DOWNLOAD_MACOS_RELEASE_URL=https://github.com/TemujinCalidius/FediHome-macOS/releases/latest -# DOWNLOAD_MACOS_APP_STORE_URL=https://apps.apple.com/app/id0000000000 +# DOWNLOAD_MACOS_APP_STORE_URL=https://apps.apple.com/app/fedihome/id6790605091 # --- Optional: Web Push (PWA phone notifications) --- # Lets you install the site to your phone's home screen and receive push diff --git a/CHANGELOG.md b/CHANGELOG.md index 1dabdb8..f02a15a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - **Documented what actually happens when you change your domain** (#326) — `docs/fediverse-setup.md` gains a **Changing Your Domain** section. ActivityPub has no rename: your identity is a URL, and every server that has seen you stores it. The network's answer is an alias on the new account plus a `Move` from the old one — which only works while **the old domain is still serving**, because remote servers verify the move by fetching both ends. Move first and lose the domain later and your followers can still be brought across; lose the domain first and they can't, by anyone, ever. FediHome doesn't implement that handshake yet, so for now the guidance is to treat your domain as permanent, and the recommended shape of a move (new instance alongside the old, then decommission slowly) is written down. ### Changed +- **The FediHome macOS app is on the Mac App Store** — it's out of review and live, so the download surface now links straight to the [App Store listing](https://apps.apple.com/app/fedihome/id6790605091) instead of showing "coming soon". The link is region-neutral, so Apple sends each visitor to their own storefront, and it's the default now (alongside the existing direct GitHub download) for any instance that turns the download page on — no configuration needed. Still overridable via env or the admin panel. - **Setting up on an address the Fediverse can't reach is now a deliberate choice** (#326) — the wizard used to let you finish on `localhost` or a private-network address with nothing but a warning. That bakes an identity nobody can follow into your ActivityPub actor, and because posts store their full URL, into everything you publish before you move. It's still allowed — testing locally is a perfectly reasonable thing to do — but you now have to tick a box confirming that's what you're doing. Setting up on a real domain is unchanged. ### Fixed diff --git a/docs/configuration.md b/docs/configuration.md index cf89521..26aee3b 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -163,13 +163,13 @@ Set any of these to `false` to hide that section from the navigation. The corres ## macOS App Download -FediHome has a native menu-bar Mac app. When enabled, a **Download** nav link, a homepage hero CTA, and a `/download` marketing page appear. It's **off by default** — a personal instance isn't advertising an app it may not use — and is intended for the public demo. +FediHome has a native menu-bar Mac app, [live on the Mac App Store](https://apps.apple.com/app/fedihome/id6790605091). When enabled, a **Download** nav link, a homepage hero CTA, and a `/download` marketing page appear. It's **off by default** — a personal instance isn't advertising an app it may not use — and is intended for the public demo. | Env var | Default | Purpose | |---------|---------|---------| | `DOWNLOAD_MACOS_ENABLED` | `false` | Show the Download link, hero CTA, and `/download` page. | -| `DOWNLOAD_MACOS_RELEASE_URL` | the app repo's GitHub Releases `latest` | Primary download — always the newest notarized build. Prefer `releases/latest` over a pinned tag so it auto-tracks new versions. | -| `DOWNLOAD_MACOS_APP_STORE_URL` | *(empty)* | Optional Mac App Store listing. When set, a "Download on the Mac App Store" button appears alongside the GitHub download; until then that slot shows a "coming soon" placeholder. | +| `DOWNLOAD_MACOS_RELEASE_URL` | the app repo's GitHub Releases `latest` | Direct download — always the newest notarized build. Prefer `releases/latest` over a pinned tag so it auto-tracks new versions. | +| `DOWNLOAD_MACOS_APP_STORE_URL` | the live Mac App Store listing | The "Download on the Mac App Store" button. Region-neutral, so Apple redirects each visitor to their own storefront. Both URLs already point at the project's app; only override to point at a fork/rebuild. Clearing it shows a "coming soon" placeholder instead. | All three are also editable at runtime from **Admin → Site settings** (they overlay the env defaults, no restart). diff --git a/site.config.ts b/site.config.ts index d0c56eb..fa4ccad 100644 --- a/site.config.ts +++ b/site.config.ts @@ -87,15 +87,20 @@ export const siteConfig = { // Native-app downloads (#241). When DOWNLOAD_MACOS_ENABLED=true, a "Download" // nav link, a homepage hero CTA, and a /download page appear — a marketing // surface for the FediHome macOS app. Off by default so a personal instance - // isn't advertising an app it may not use; the public demo turns it on. The - // release URL tracks GitHub Releases "latest" (always the newest notarized - // build); the App Store URL is an empty slot until the listing is approved. + // isn't advertising an app it may not use; the public demo turns it on. Both + // URLs default to the project's own app (there's only one FediHome macOS app): + // the release URL tracks GitHub Releases "latest" (the newest notarized build), + // and the App Store URL points at the live listing. Region-neutral on purpose, + // so Apple redirects each visitor to their own storefront. Override either via + // env or the admin panel. download: { macosEnabled: process.env.DOWNLOAD_MACOS_ENABLED === "true", macosReleaseUrl: process.env.DOWNLOAD_MACOS_RELEASE_URL || "https://github.com/TemujinCalidius/FediHome-macOS/releases/latest", - macosAppStoreUrl: process.env.DOWNLOAD_MACOS_APP_STORE_URL || "", + macosAppStoreUrl: + process.env.DOWNLOAD_MACOS_APP_STORE_URL || + "https://apps.apple.com/app/fedihome/id6790605091", }, // Visual theme (#250). Selects a built-in theme preset (see src/lib/themes). diff --git a/src/app/(public)/download/page.tsx b/src/app/(public)/download/page.tsx index 1382995..35cb21e 100644 --- a/src/app/(public)/download/page.tsx +++ b/src/app/(public)/download/page.tsx @@ -90,8 +90,8 @@ export default async function DownloadPage() { )} - {/* Mac App Store slot — the official badge + link drops in here once - the listing is approved (set DOWNLOAD_MACOS_APP_STORE_URL). */} + {/* Mac App Store link. Defaults to the live listing; the "coming + soon" fallback only shows if an instance clears the URL. */} {macosAppStoreUrl ? (