vued.ai/app Download Brief
Add a macOS desktop install CTA to vued.ai/app.
Release Source
The desktop release pipeline uploads a public Supabase Storage manifest:
Expected shape:
Use downloadUrl as the primary CTA href. Do not hard-code a versioned DMG URL in the page.
UX Copy
Primary button:
Install note:
Optional metadata:
Behavior
- Fetch
latest.json client-side or server-side.
- If the manifest fetch fails, show the CTA disabled with
Download unavailable.
- Link to the DMG directly; browsers will download it.
- Keep the CTA visible on non-macOS devices, but label it clearly as Mac-only.
- The bucket is public for reads. Never expose
SUPABASE_SERVICE_ROLE_KEY in the web app.
- If you want a stable branded URL, add a route like
/api/download/mac that redirects to latest.json.downloadUrl.
Headless Installer Scripts
Host the installer scripts as static plaintext responses on the website:
The scripts should be served with Content-Type: text/plain; charset=utf-8 or application/x-sh; no server-side code or special rendering is required. They download the actual runtime artifacts from the public Supabase manifest:
User-facing install commands:
The CLI auth page lives at /cli-auth. It signs the user in on the website, then redirects the Vued session and refresh token back to the temporary localhost callback supplied by the CLI. Keep NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY, and NEXT_PUBLIC_VUED_API_BASE_URL configured in the landing-page environment.
Cache Expectations
latest.json should be low-cache, roughly 60 seconds.
- Headless
latest/manifest.json should be low-cache, roughly 60 seconds.
- Versioned DMG/ZIP paths should be long-cache, roughly one year.
- Versioned headless
.tgz paths should be long-cache, roughly one year.
- The page can revalidate every minute if rendered server-side.
Last modified on June 30, 2026