Open-source rebrand, landing site, and GitHub Pages (4.0.0)#21
Merged
Conversation
…(4.0.0) Rebrand the project for its move to github.com/rousan/mx and open-source release, and add a documentation site. Rename: - npm package @roulabs/mx -> @rousan/mx (name, repository, bugs); homepage now https://mx.rousanali.com - selfupdate.ts PKG constant, core migration/version-gate messages, templates, README, and all docs updated from roulabs -> rousan - version 3.6.2 -> 4.0.0 (a new package; the old one will be deprecated with a pointer). No behavior change: runtime stays v3, all commands identical. - historical references in docs/history.md and docs/sessions left as-is Docs site (mx.rousanali.com): - VitePress site built directly from docs/*.md (single source, no drift): docs/.vitepress/config.mts, docs/index.md (home), docs/getting-started.md - markdown.html:false so CLI <name>/<repo> placeholders don't break the Vue build; sessions/ and docs/README.md excluded from the site - root scripts docs:dev / docs:build / docs:preview; eslint + gitignore updated - Cloudflare Pages deploy documented (prod on main, preview per PR) in docs/development.md
A standalone React/Vite/Tailwind site that teaches mx from zero for a newcomer who has never heard of it: the problem it removes, a four-word mental model with a diagram, a four-command quickstart, a curated command reference, and an FAQ. Light/dark theme-aware, responsive. This becomes the public site at mx.rousanali.com; docs/ stays as the deep reference. Cloudflare Pages now builds pnpm landing:build -> apps/landing/dist (development.md updated). Adds landing:* root scripts, eslint ignore, and the dist gitignore entry.
Drop the indigo->cyan accent gradient in favor of a grayscale system (like the mission-control dashboard): emphasis now comes from ink weight and gray steps, not hue. Reworked in the design tokens so it flows through every component; primary buttons/step markers become a solid near-black fill (inverted to near-white in dark), the wordmark is strong ink, the hero glow is removed, and terminal window dots are monochrome.
mx's core identity is combining a coding agent's parallel sessions (Claude Code and others) with git worktrees; that was buried as the last feature card. Now it leads: - Hero rewritten to 'A coding agent on every feature, all at once' with agent-forward subcopy and badge. - New 'Built for a fleet of coding agents' section: the sessions + worktrees = isolated agents equation, an mx work open terminal, and the concrete workflow (per-feature session, session-prompt hook, no collisions, --porcelain). - Agent framing woven into the Why before/after; parallel-agents card promoted to first in Features (mission-control added to fill the grid). - Nav, FAQ, footer, and page meta updated to match.
Headline is now 'Work on parallel features using coding agents' (was 'A coding agent on every feature, all at once'), and the agent list names Claude Code, Cursor, and the rest rather than 'and friends'. Page title and og:title updated to match.
Adds a concrete, opinionated daily workflow (mx is otherwise workflow-agnostic): one fullscreen macOS Space per feature with the terminal split beside the editor, the Claude Code session in terminal tab 1 and the dev server in another, hand the feature to the agent in auto mode, switch features with a three-finger swipe, group Spaces with labeled mx divider separators viewed in Mission Control, and archive on merge after writing the session summary. Includes a split-pane Space mock and a Mission Control strip visual (MAIN / IN PROGRESS / IN REVIEWS / PR REVIEWS dividers between feature Space thumbnails). Adds the Workflow nav link.
Add .github/workflows/deploy-landing.yml: builds apps/landing and uploads it to the Cloudflare Pages project 'mx-landing' with wrangler pages deploy. Push to main -> production (mx.rousanali.com); pull_request -> preview URL. Path-filtered to landing changes, concurrency-guarded per ref, and it reports the deployment URL in the run summary without posting a PR comment. Auth via the CLOUDFLARE_API_TOKEN and CLOUDFLARE_ACCOUNT_ID repo secrets. Updates docs/development.md to document the Action, the secrets, and the one-time production-branch + custom-domain setup.
Switch the landing deploy from Cloudflare Pages to an assets-only Cloudflare Worker: - add apps/landing/wrangler.jsonc (worker 'mx-landing', assets.directory ./dist, SPA fallback) - add wrangler v4 devDep + deploy / cf:dev scripts - rewrite .github/workflows/deploy-landing.yml to run wrangler in apps/landing: 'wrangler deploy' on push to main (production), 'wrangler versions upload' on PRs (preview version), same CLOUDFLARE_API_TOKEN / CLOUDFLARE_ACCOUNT_ID secrets - gitignore apps/landing/.wrangler/ - update docs/development.md hosting section to Workers (token needs Workers Scripts: Edit; attach the custom domain to the Worker) Validated locally with wrangler deploy --dry-run (v4.112).
Replace the Cloudflare Worker deploy with GitHub Pages: - rewrite .github/workflows/deploy-landing.yml to build apps/landing and publish dist via actions/upload-pages-artifact + actions/deploy-pages (deploy from main; PRs build-only, since Pages has no per-PR preview) - add apps/landing/public/CNAME (mx.rousanali.com) so Vite copies it into dist and Pages keeps the custom domain - drop wrangler.jsonc, the wrangler devDep + deploy/cf:dev scripts, and the .wrangler gitignore entry - update development.md hosting section + history.md + code comments from Cloudflare to GitHub Pages (no repo secrets needed; auth via id-token) Custom domain is a CNAME mx.rousanali.com -> rousan.github.io in DNS.
Give the site a brand, in the spirit of the sibling 'ccal' project: - add a Logo mark (a multiplex fan-out: one node branching into three parallel nodes) in nav, hero, footer, and as the favicon - introduce a single warm terra-cotta accent over the monochrome base, used sparingly for the logo, the hero highlight phrase, $ prompts, links, icon chips, and the primary CTA button; step markers stay neutral ink and eyebrows are gray, so the accent reads as an accent - light/dark tuned (brighter terra-cotta on the dark canvas)
My local installs (on a network whose ~/.npmrc uses a private jfrog Artifactory mirror) baked 237 corp tarball URLs (jfrog-colo.corp.thoughtspot.com) into pnpm-lock.yaml, which GitHub runners can't resolve — breaking CI, release, and deploy at pnpm install. Rewrite every resolution URL back to registry.npmjs.org (same versions and integrity hashes). Verified with a frozen install from public npm.
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.
Rebrands the project to
@rousan/mxongithub.com/rousan/mx(no CLI/runtime behavior change; runtime still v3). Adds a beginner-first landing + docs site underapps/landing(React/Vite/Tailwind) that teaches mx from zero — problem, mental model, quickstart, the coding-agent workflow, commands — with a monochrome + terra-cotta theme and a logo mark. Adds the GitHub Pages deploy workflow, updates docs, and bumps the version to 4.0.0.