feat(site): a project page, published by GitHub Pages, and banner artwork for partners - #14
Conversation
…work for partners One HTML file in site/, no build step, on the panel's own design tokens so the page and the app read as one thing: what mcctl does, who it is for, what stays on the machine, and three steps to a running server. The Download buttons ask GitHub for the newest installer and name its version; a failed lookup leaves them pointing at the releases page. Two screenshots of the real panel. site/banner/ carries the artwork a partner site embeds - 728x90, 300x250 and 468x60 - as HTML that is the source to edit, plus the rendered PNGs; tools/render-banners.mjs re-renders them. A Pages workflow deploys site/ on every push to main once Pages is switched to GitHub Actions in the repository settings. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016hpdfE8mWH6x6yqRVfEVvb
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e37e2d5f24
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| * <p>Needs a Chromium: `npx playwright-core` is not a dependency of mcctl, so this is run by hand | ||
| * on a machine that has one - `npm i -g playwright-core` and a browser it can find, or pass the | ||
| * executable with MCCTL_CHROMIUM. The PNGs are committed; the HTML is the source to edit. |
There was a problem hiding this comment.
Install Playwright where the renderer can resolve it
With the documented setup (npm i -g playwright-core followed by node tools/render-banners.mjs), Node does not search npm's global module directory when createRequire(import.meta.url) resolves playwright-core, so the script exits with MODULE_NOT_FOUND and repeats the same ineffective instruction. Install it locally for this invocation or explicitly resolve the global installation so contributors can actually regenerate the committed banners.
Useful? React with 👍 / 👎.
What this changes, and why
mcctl is about to be linked from a partner site, and a banner needs somewhere to land that is not a GitHub README.
site/index.html: one file, no build step, on the panel's own design tokens so the page and the app read as one thing. What mcctl does, who it is for (plugin testing), what stays on the machine, and three steps to a running server. The Download buttons ask GitHub for the newest installer and name its version; a failed lookup leaves them pointing at the releases page. Two screenshots of the real panel.site/banner/: 728x90, 300x250 and 468x60 banners as HTML (the source to edit) plus rendered PNGs.tools/render-banners.mjsre-renders them..github/workflows/site.yml: deployssite/on every push to main. Needs one setting after merge: repository Settings → Pages → Source → GitHub Actions. The page is then athttps://joogiebear.github.io/mcctl/until a custom domain is added.How it was verified
Rendered at desktop and phone widths in Chromium and checked by eye; the nav collapses on a phone, the screenshots load, the Download link falls back correctly with no network.
Banners rendered from the HTML at 2x and checked for overflow.
npm testpassesCommit messages carry conventional prefixes (
feat:,fix:, ...)No runtime dependencies added, no build step introduced
🤖 Generated with Claude Code
https://claude.ai/code/session_016hpdfE8mWH6x6yqRVfEVvb
Generated by Claude Code