fix(landing): serve hosted install.sh wrapper - #4866
Conversation
|
🧪 This PR changes a user-facing install path, so it needs a manual QA pass before merge — please hold off self-merging for now. We'll loop QA in once it's merge-ready. |
|
Hey @YOMXXX — the current blocker is the one @nettee called out on this head: the shadowed- Once that check validates an Open-Design-specific marker in the help output and the regression test covers the success-exit / non-Open-Design case, this should be ready for another look. 💡 To drive this PR to merge hands-free, paste this to your AI coding agent (Claude Code / Codex / opencode / Cursor …): |
22eb10d to
2af10fe
Compare
2af10fe to
592aed3
Compare
nettee
left a comment
There was a problem hiding this comment.
@YOMXXX I re-reviewed the updated hosted installer path on 592aed3f, including the CLI-owned probe token, the landing-page wrapper, and the regression coverage for shadowed od handling. The current shape closes the earlier shadowing and help-text drift concerns cleanly, and the wrapper now fails fast before delegating to a non-Open-Design binary. I wasn’t able to rerun the package tests in this checkout because node_modules are absent here, but the changed-range logic and test coverage line up with the fix. Thanks for iterating on this quickly and tightening the contract between the hosted script and the CLI.
|
Thanks for the quick turnaround, @YOMXXX — the current head is clear from the earlier review blocker, and I'm queueing the manual QA pass next. |
|
Thanks @kokisanai — quick status check from our side: this PR isn't waiting on maintainer review right now. @nettee already approved the current head, and the remaining step is the manual QA pass that's already queued. @YOMXXX If QA finds anything we'll keep the thread moving here, but there isn't a review blocker from the team at the moment. |
AmyShang-alt
left a comment
There was a problem hiding this comment.
QA 验收记录
验收范围:
- 验证 hosted
install.sh不再落到 landing-page HTML fallback。 - 验证 wrapper 能通过稳定 CLI probe 识别 Open Design
od,正常委托od mcp install <agent> [options]。 - 验证 Linux/WSL 常见的非 Open Design
odshadowing 会 fail fast,不会继续执行错误二进制。 - 验证 landing-page build 与 daemon CLI probe 类型/测试边界。
已验证:
- PR head:
592aed3f437d7dc79c3856098c37a5e30368c748。 pnpm install --frozen-lockfile通过。pnpm --filter @open-design/landing-page test -- install-sh-static通过:30 tests passed。pnpm --filter @open-design/daemon exec vitest run -c vitest.config.ts tests/mcp-install-cli.test.ts通过:1 test passed。pnpm --filter @open-design/landing-page build通过,只有既有 warning/hints,无 error。pnpm --filter @open-design/daemon typecheck通过。- 手工抽验
install.sh --help、缺少<agent>、fake Open Designod正常委托、fake/coreutils 风格od拒绝均符合预期。 - 本地 landing preview 访问
/install.sh返回 shell 脚本内容,不是 HTML fallback。
未验证:
- 未验证线上
https://open-design.ai/install.sh部署后的实际响应;该项需等 PR 合并/部署后做最终 curl 抽验。
风险/关注点:
- 这是公开安装入口,用户影响较高;当前回归测试和手工抽验已覆盖主要失败模式。
结论:
- 验收通过。当前 head 可移除
needs-validation并标记validated。
Bring docs/i18n/README.zh-TW.md back in line with README.md: - Add the hosted `curl ... install.sh | sh` install path plus the install.sh wrapper note (nexu-io#4866). - Add the WSL2 note in the coding-agent install section and the WSL2 / wsl-setup.md pointer in the run-from-source line. - Add the macOS Docker Desktop bridge-networking note. - Add utm_source / utm_medium / utm_content attribution to the six open-design.ai links (nexu-io#4792). Headings and structure unchanged; all referenced docs (wsl-setup.md, deploy/README.md#docker-desktop-on-macos, windows-troubleshooting.md) exist.
Bring docs/i18n/README.zh-TW.md back in line with README.md: - Add the hosted `curl ... install.sh | sh` install path plus the install.sh wrapper note (nexu-io#4866). - Add the WSL2 note in the coding-agent install section and the WSL2 / wsl-setup.md pointer in the run-from-source line. - Add the macOS Docker Desktop bridge-networking note. - Add utm_source / utm_medium / utm_content attribution to the six open-design.ai links (nexu-io#4792). Headings and structure unchanged; all referenced docs (wsl-setup.md, deploy/README.md#docker-desktop-on-macos, windows-troubleshooting.md) exist.
Fixes #4136
Why
I hit this while checking the hosted install path from the issue.
https://open-design.ai/install.shwas falling through to the landing-page HTML app, socurl | shreceived markup instead of shell and failed immediately.The actual MCP installer logic already lives in
od mcp install. This PR adds a thin hosted shell wrapper so the URL returns executable shell while keeping the product-owned installer in the CLI.What users will see
curl -fsSL https://open-design.ai/install.sh | sh -s <agent>now receives a shell script that delegates tood mcp install <agent> [options]. The wrapper prints help for--help, fails clearly ifodis missing, and rejects non-Open-Designodbinaries such as Linux/WSL coreutils/usr/bin/od.The README also documents the hosted equivalent next to the existing
od mcp install <agent>command.Surface area
apps/weborapps/desktop(including Electron menu bar)odsubcommand or flag, newtools-dev/tools-pack/tools-prflag, or newOD_*env var/api/*endpoint, new SSE event, or changed shape inpackages/contractsskills/,design-systems/,design-templates/, orcraft/, or change to the skills protocolTRANSLATIONS.mdfor the locale workflow)package.json(dependenciesordevDependencies); workspace-packagepackage.jsonfiles are out of scope. Include a paragraph on what we get vs. what bytes we ship (seeCONTRIBUTING.md→ Code style)Screenshots
No screenshot attached. This is a static hosted shell asset and README update, not a visual UI change.
Bug fix verification
apps/landing-page/tests/install-sh-static.test.tsmainand green on this branch? yes — the red case was the missingapps/landing-page/public/install.shstatic asset, which meant the hosted route fell back to the HTML app.Validation
PATH=/Users/liguanchen/.nvm/versions/node/v24.15.0/bin:$PATH pnpm --filter @open-design/landing-page test— 29 tests passedPATH=/Users/liguanchen/.nvm/versions/node/v24.15.0/bin:$PATH pnpm --filter @open-design/landing-page buildPATH=/Users/liguanchen/.nvm/versions/node/v24.15.0/bin:$PATH pnpm guardPATH=/Users/liguanchen/.nvm/versions/node/v24.15.0/bin:$PATH pnpm typecheck