Skip to main content

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