site: offdesk.dev marketing site on Astro - #307
Open
renyuanz wants to merge 1 commit into
Open
Conversation
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>
Bugbot couldn't run - usage limit reachedBugbot 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) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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: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 workspacenever 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:
Dark, one accent (the app's amber, from
DESIGN.md), monospace for anythingterminal-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.gifexists — a build-timeexistsSynccheck — so until the GIF is recorded the section is simply absentrather than a broken image on every visitor's screen.
The install script
site/public/installis POSIX sh, served athttps://offdesk.dev/installforcurl -fsSL https://offdesk.dev/install | sh.It detects OS and arch, resolves the newest
vX.Y.Zrelease — deliberatelyskipping
desktop-v*andapp-v*, which ship the desktop and Android apps andcarry no CLI or node binaries — and installs
offdeskandoffdesk-nodeto~/.local/bin, or to/usr/local/binwith--system.On sudo:
--systemis the only path that uses it, it prints what it isabout 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--systemor--prefix, not a silent escalation.When no release matches it exits non-zero with the
cargo buildcommandsinstead of failing obscurely.
Verified against a real GitHub release, not just read: version resolution
(correctly picked the newest
v*and skippeddesktop-v*), download, chmod,atomic replace over a running binary, PATH and next-step reporting, and every
failure path.
Deploy
.github/workflows/site.ymlbuilds on push tomain— path-filtered tosite/**— and deploys to Cloudflare Pages. Account ID and API token aresecrets; the workflow header says exactly where in the Cloudflare dashboard to
find each one.
Before this can go live
offdesk(Direct Upload) andadd
CLOUDFLARE_ACCOUNT_IDandCLOUDFLARE_API_TOKEN.docs/media/hero.gifand drop it atsite/public/media/hero.gif.Brief is in
docs/media/README.mdon rename: webmux → offdesk, plus MIT licence and a rewritten README #306.TODO— therule was a cited source or
TODO, never a guess, so only offdesk's row isfilled. The site should not be published until these are sourced.
github.com/zalify/offdesk, per the brief. Thisrepo 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 tosite/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.astrowith 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 areTODO), and security copy. The hero image is omitted at build time unlesspublic/media/hero.gifexists.site/public/installis a POSIX installer served at/installforcurl | sh(GitHub release binaries, optional--systemsudo, skips non-v*release tags)..github/workflows/site.ymlbuilds on pushes tomainwhensite/**changes and deployssite/distto Cloudflare Pages projectoffdeskvia Wrangler (requiresCLOUDFLARE_ACCOUNT_IDandCLOUDFLARE_API_TOKEN).Reviewed by Cursor Bugbot for commit 5b7e6c7. Configure here.