Skip to content

site: offdesk.dev marketing site on Astro - #307

Open
renyuanz wants to merge 1 commit into
mainfrom
site/offdesk-dev
Open

site: offdesk.dev marketing site on Astro#307
renyuanz wants to merge 1 commit into
mainfrom
site/offdesk-dev

Conversation

@renyuanz

@renyuanz renyuanz commented Aug 31, 2026

Copy link
Copy Markdown

The offdesk.dev marketing site. Split out of #306 so it can be reviewed and
shipped on its own — it has no code dependency on the rename, and is based on
main, so the two can merge in either order.

What it is

One Astro page, no framework components, no client-side framework. It builds to
a static site/dist:

dist/index.html
dist/_astro/index.CBmL0my_.css
dist/favicon.svg
dist/install

One HTML file, one stylesheet, no JS bundle, no external requests — no CDN, no
Google Fonts. The only script on the page is the copy-to-clipboard button.

site/ is its own pnpm root (site/pnpm-workspace.yaml) so the app workspace
never has to install Astro, and it pins the same pnpm version the rest of the
repo uses so local and CI resolve identically.

Design

Mobile first, because the whole pitch is a phone. Checked at 390px and 1280px:

  • no page-level horizontal overflow at either width
  • the comparison table scrolls inside its own box, not the page
  • the install command fits on one line at 375px

Dark, one accent (the app's amber, from DESIGN.md), monospace for anything
terminal-shaped, system stack for body text. No stock illustrations, no
gradients, no animated anything. The how-it-works diagram is inline SVG rather
than an image file.

The hero figure only renders once public/media/hero.gif exists — a build-time
existsSync check — so until the GIF is recorded the section is simply absent
rather than a broken image on every visitor's screen.

The install script

site/public/install is POSIX sh, served at
https://offdesk.dev/install for curl -fsSL https://offdesk.dev/install | sh.

It detects OS and arch, resolves the newest vX.Y.Z release — deliberately
skipping desktop-v* and app-v*, which ship the desktop and Android apps and
carry no CLI or node binaries — and installs offdesk and offdesk-node to
~/.local/bin, or to /usr/local/bin with --system.

On sudo: --system is the only path that uses it, it prints what it is
about to do before each privileged step, and nothing is ever piped into sudo.
Without --system, an unwritable destination is an error telling you to pass
--system or --prefix, not a silent escalation.

When no release matches it exits non-zero with the cargo build commands
instead of failing obscurely.

Verified against a real GitHub release, not just read: version resolution
(correctly picked the newest v* and skipped desktop-v*), download, chmod,
atomic replace over a running binary, PATH and next-step reporting, and every
failure path.

Deploy

.github/workflows/site.yml builds on push to main — path-filtered to
site/** — and deploys to Cloudflare Pages. Account ID and API token are
secrets; the workflow header says exactly where in the Cloudflare dashboard to
find each one.

Before this can go live

  • Create the Cloudflare Pages project named offdesk (Direct Upload) and
    add CLOUDFLARE_ACCOUNT_ID and CLOUDFLARE_API_TOKEN.
  • Record docs/media/hero.gif and drop it at site/public/media/hero.gif.
    Brief is in docs/media/README.md on rename: webmux → offdesk, plus MIT licence and a rewritten README #306.
  • Fill the comparison table. All 25 competitor cells are TODO — the
    rule was a cited source or TODO, never a guess, so only offdesk's row is
    filled. The site should not be published until these are sourced.
  • Note the links point at github.com/zalify/offdesk, per the brief. This
    repo is currently zalify/offdesk.dev, so they 404 until it is renamed —
    same caveat as rename: webmux → offdesk, plus MIT licence and a rewritten README #306.

🤖 Generated with Claude Code


Note

Low Risk
Greenfield static site and CI only; no changes to hub/node runtime. Go-live depends on Cloudflare secrets, optional hero asset, and sourcing comparison-table cells before public launch.

Overview
Adds a standalone site/ package (Astro, static output to site/dist) for the offdesk.dev landing page, kept separate from the main app workspace via its own pnpm root and lockfile.

The page is a single index.astro with hero/install CTA, LAN vs public setup cards, an inline SVG architecture diagram, agent CLI orchestration example, a competitor comparison table (only offdesk’s row is filled; others are TODO), and security copy. The hero image is omitted at build time unless public/media/hero.gif exists. site/public/install is a POSIX installer served at /install for curl | sh (GitHub release binaries, optional --system sudo, skips non-v* release tags).

.github/workflows/site.yml builds on pushes to main when site/** changes and deploys site/dist to Cloudflare Pages project offdesk via Wrangler (requires CLOUDFLARE_ACCOUNT_ID and CLOUDFLARE_API_TOKEN).

Reviewed by Cursor Bugbot for commit 5b7e6c7. Configure here.

A single Astro page with no framework components, building to a static
site/dist: one HTML file, one stylesheet, no JS bundle, no external
requests. The only script on the page is the copy-to-clipboard button.

site/ is its own pnpm root (site/pnpm-workspace.yaml) so the app workspace
never has to install Astro, and it pins the same pnpm the rest of the repo
uses so local and CI resolve identically.

Mobile first, since the whole pitch is a phone. Checked at 390px and
1280px: no page-level horizontal overflow at either, the comparison table
scrolls inside its own box rather than the page, and the install command
fits on one line at 375px. Dark, one accent, monospace for anything
terminal-shaped, system stack for body text. The how-it-works diagram is
inline SVG, not an image. The hero figure only renders once
public/media/hero.gif exists, so a missing asset is an absent section
rather than a broken image on every visitor's screen.

site/public/install is a POSIX sh installer for
`curl -fsSL https://offdesk.dev/install | sh`. It detects OS and arch,
resolves the newest vX.Y.Z release (skipping desktop-v* and app-v*, which
carry no CLI or node binaries), and installs offdesk and offdesk-node to
~/.local/bin, or to /usr/local/bin with --system. --system is the only
path that touches sudo, it says so before each step, and nothing is ever
piped into sudo. With no matching release it exits non-zero with the
cargo build commands instead. Verified against a real release: version
resolution, download, chmod, atomic replace over a running binary, PATH
and next-step reporting, and every failure path.

The comparison table carries offdesk's row and TODO in every competitor
cell — the rule is a cited source or TODO, never a guess.

.github/workflows/site.yml builds on push to main and deploys to
Cloudflare Pages, with the account ID and API token as secrets and a
comment on where to create each.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@cursor

cursor Bot commented Aug 31, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_65f579dc-a5e0-49ea-bff8-eb2af928c651)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant