Conversation
New `mx mission-control` (alias `mx mc`): a local, read-only live dashboard for the runtime. Open the printed localhost URL (a second monitor works well) for a calm, monochrome, auto-refreshing overview of every repo's and work's health plus a consolidated ports board. Server - Zero-dependency `node:http` server: serves a single self-contained HTML page at `/`, a JSON snapshot at `/api/state`, and a Server-Sent Events stream at `/api/stream`. Recomputes on a short tick and pushes instantly on manifest changes (fs.watch on works/, repos/, mx.json). `--port` walks upward if busy (default 7777); `-o` opens the browser. - Built in-process from listRepoHealth + listWorkHealth; never mutates anything. UI (apps/mission-control — React + Vite + Tailwind) - Builds to one inlined index.html (vite-plugin-singlefile), copied into npm/mission-control/ at build time. React/Vite/Tailwind are dev-only, so the published package keeps zero runtime dependencies. `pnpm build` builds the dashboard before the CLI so the copy step finds dist/. - Theme auto-syncs with the OS via prefers-color-scheme (light + dark). - Semantic health colors: green tick when healthy, red when not. - Works grid shows active works by default with a "show archived" toggle; the ports board is independent and covers every work, rendered as a nested tree (work -> worktree -> service/port/url) with cross-work collisions flagged. Also - Fix a false positive in repo health rendering (CLI + dashboard): a repo with no remote (no origin/HEAD) has no default branch to compare against, so its current branch is no longer flagged — only a detached HEAD is. Matches core. - Clean two stale references to the removed `mx work worktree hydrate` command / `--no-hydrate` flag in the stamped templates. New `commands/missionControl.ts` + `paths.ts#missionControlHtml()` + `--port` in the CLI; `apps/mission-control/` workspace; build/eslint/gitignore wiring. Bump to 3.1.0 (runtime stays v3, no migration). Docs updated. 85 tests pass.
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.
Adds
mx mission-control(aliasmx mc): a local, read-only live web dashboard for the runtime. Run it, open the printedhttp://localhost:7777(a second monitor works well), and watch a calm, monochrome, auto-refreshing overview of every repo's and work's health plus a consolidated ports board.Minor — runtime stays v3, no migration.
Server (zero runtime deps)
A hand-written
node:httpserver serves a single self-contained HTML page (/), a JSON snapshot (/api/state), and a Server-Sent Events stream (/api/stream). It recomputes on a short timer and pushes instantly on manifest changes (fs.watchonworks/,repos/,mx.json).--portwalks upward if busy (default 7777);-oopens the browser. State is built in-process fromlistRepoHealth+listWorkHealth— it never mutates the runtime.UI —
apps/mission-control/(React + Vite + Tailwind)index.html(vite-plugin-singlefile), copied intonpm/mission-control/at build time. React/Vite/Tailwind are dev-only, so the published@roulabs/mxkeeps zero runtime dependencies.pnpm buildbuilds the dashboard before the CLI so the copy step findsdist/.prefers-color-scheme(light + dark).work → worktree → (service · port · url)so names aren't repeated; cross-work collisions flagged in red, archived works dimmed.Also in this release
origin/HEAD) has no default branch to compare against, so its current branch is no longer flagged — only a detached HEAD is. Now matches@mx/core(which already treated it as healthy).mx work worktree hydratecommand /--no-hydrateflag in the stampedtemplates/.Code
commands/missionControl.ts,paths.ts#missionControlHtml(),--portflag,main.tsrouting (mission-control/mc), help text.apps/mission-control/workspace;tsupcopies itsdist/intonpm/mission-control/; rootbuildbuilds it first; eslint ignores it;.gitignorecoversnpm/mission-control/and.playwright-mcp/.npm/package.json→ 3.1.0.Verification
typecheck (all 3 projects) / lint / 85 tests / build all green. Smoke-tested end-to-end against a seeded multi-repo, multi-worktree runtime:
/,/api/state, SSE/api/stream; browser screenshots confirm the UI in light and dark, the archived toggle, the semantic colors, the no-remote fix, and the nested ports tree (incl. a worktree with multiple ports).