Skip to content

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 04 May 16:52
· 4 commits to main since this release
feat: v0.4.0 — packaging pipeline and rhino3dm-mcp PyPI debut

YAK packaging pipeline
----------------------

`scripts/publish-yak.sh` is added so that the C# bridge plugin ships as
a Yak package alongside the raw `.rhp`. The script stages the built
plugin under `rhino_plugin/csharp/yak-stage/{win,mac}/` together with a
platform-specific `manifest.yml` and the shared `rhino-mcp.png` icon,
then drives `yak.exe build` to produce the `.yak` file. The release
workflow gains a `build-yak` job that runs the script on a Windows
runner with the Rhino 8 Yak CLI when present and attaches the
`.yak` files to the GitHub Release.

Version sync and docs
---------------------

`pyproject.toml`, `src/rhino_mcp/__init__.py`,
`rhino_plugin/csharp/manifest.yml`, and the staged
`rhino_plugin/csharp/yak-stage/{win,mac}/manifest.yml` are all bumped
to `0.4.0` together so that the YAK package and the PyPI wheel ship as
a matched pair. `pip install` / `uvx` snippets in `README.md`,
`README.ko.md`, and `docs/{en,ko}/{installation,configuration}.md`
swap to the new distribution name; the `rhino-mcp` CLI command stays.
The legacy `assets/rhino-logo.png` is replaced with
`assets/rhino-mcp.png` so the README header and the YAK plugin icon
share one asset. `CHANGELOG.md` gains a `[0.4.0]` entry covering
the packaging pipeline and the PyPI rename in both English and
Korean.

One-shot Claude Desktop wiring
------------------------------

A new `rhino-mcp install` sub-command writes (or updates) the
`mcpServers.rhino-mcp` entry inside `claude_desktop_config.json` so
end users no longer have to edit the JSON by hand after `pip install`.
The command auto-detects the platform-specific config path on macOS,
Windows, and Linux, preserves any other registered MCP servers, writes
a timestamped `.bak.*` copy of the previous file, and is idempotent on
re-run. Flags: `--mode {auto,standalone,bridge}`,
`--transport {stdio,http}`, `--name`, `--launcher
{auto,uvx,rhino-mcp,python}`, `--config-path`, `--force`,
`--no-backup`, `--dry-run`. The implementation lives in
`src/rhino_mcp/install.py` and is wired into `server.py` as an argparse
sub-command so existing invocations like `uvx rhino3dm-mcp` (no
sub-command) still launch the server unchanged.

Operational notes (one-time)
----------------------------

* PyPI Pending Publisher needs to be re-created with project name
  `rhino3dm-mcp`, owner `EaseHee`, repository `rhino-mcp`, workflow
  `release.yml`, environment empty.
* Tagging `v0.4.0` triggers PyPI publish (Trusted Publishing) plus
  `.rhp` and `.yak` artefact upload to the GitHub Release.

Verification
------------

* `uv build` — `dist/rhino3dm_mcp-0.4.0-py3-none-any.whl` METADATA
  shows `Name: rhino3dm-mcp`, `Version: 0.4.0`, and entry_points.txt
  lists both `rhino-mcp` and `rhino3dm-mcp` console scripts.
* `uv run pytest tests/ -q` — 237 passed (213 prior + 24 new install
  tests covering OS path detection, idempotent merge, backup creation,
  dry-run, force overwrite, and CLI integration).