v3.38.2

ruvnet/ruflov3.38.2Aug 12, 2026by ruvnet

AI Summary

Fixes `ruflo migrate status` output and resolves `mcp start -t http` binding issues where the server exited before accepting connections.

Key Highlights

  • Fixed `migrate status` to print the correct marketplace install command for missing agents.
  • Added `ruflo migrate fix --agents` command to restore missing agent files from canonical plugins.
  • Fixed `mcp start -t http` to block in foreground with graceful shutdown instead of exiting immediately.

New Features

  • New command `ruflo migrate fix --agents`.

Full Release Notes

## Fixes

**#2985 — `ruflo migrate status`'s ADR-128 removed-agent remediation printed a command that couldn't succeed.** `ruflo plugins install <plugin>` required `-n/--name` (not a positional) *and* targeted the npm-package plugin system entirely, while the gap detector's own registry check (`installed_plugins.json`) is for the Claude Code marketplace system. Fixed to print `/plugin install <plugin>@ruflo`, and — going further than a pointer fix — adds a real `ruflo migrate fix --agents` command that restores the missing agent files from their canonical plugin content (marketplace clone → repo checkout → GitHub tag → `main` fallback), rewriting the marketplace-only `mcp__plugin_ruflo-core_ruflo__*` tool namespace to the canonical `claude-flow` server key for npm-track users. Never overwrites an existing file. Contributed by [@pacphi](https://github.com/pacphi) via [#2986](https://github.com/ruvnet/ruflo/pull/2986).

**#2984 — `ruflo mcp start -t http` printed a full "Status: Running" success table, then exited within seconds without ever binding the port.** Root cause: `bin/cli.js`'s dispatcher unconditionally exits the process once a command's action resolves (an assumption that only holds for genuinely one-shot commands) — `mcp start`'s HTTP/WebSocket path returned immediately after printing its success table, tearing down the freshly-bound `http.Server` before any client could connect. Fixed by blocking in the foreground with SIGINT/SIGTERM-driven graceful shutdown, matching `daemon start --foreground`'s established pattern.

Also corrected doc drift found while investigating #2985: `README.md`/`docs/USERGUIDE.md`'s `claude mcp add` examples now use the canonical `claude-flow` server key (per #2206); README's claim that the Claude Code plugin path never registers an MCP server corrected (`ruflo-core` ships its own).

## Also investigated this cycle, not reproduced

#2969 (`--version` hang), #2970 (witness verify soft-pass), #2967 bug 1 (uptime unit mismatch) — checked via direct repro against `main`, none reproduced. See the linked issues for the evidence.

## Links

- PR: [#2986](https://github.com/ruvnet/ruflo/pull/2986) (external contribution, reviewed and merged)
- PR: [#2987](https://github.com/ruvnet/ruflo/pull/2987)
- Previous release: [v3.38.1](https://github.com/ruvnet/ruflo/releases/tag/v3.38.1)