v3.10.2
ruvnet/ruflov3.10.2May 25, 2026by ruvnet
AI Summary
This release adds native Windows support for plugin hooks without requiring WSL or Git Bash, addressing exit 126 errors on Windows. It introduces a Node.js-based shim that replaces bash scripts on Windows, along with init-time platform detection and comprehensive CI validation across Windows, macOS, and Ubuntu.
Key Highlights
- Windows plugin hooks now work natively without WSL or Git Bash, fixing exit 126 errors
- New Node.js shim (ruflo-hook.cjs) provides cross-platform plugin hook execution
- Init-time platform detection generates Windows-specific settings to override bash hooks
- New CI smoke tests across ubuntu + macos + windows-latest matrix
- Static audit script enforces cross-platform standards in plugin hooks
New Features
- Node.js shim (plugins/ruflo-core/scripts/ruflo-hook.cjs) - reads stdin JSON via Node, dispatches via child_process.spawn, exits 0
- Windows init-time platform detection that writes .claude/settings.json with node-based hook overrides
- Static audit script (scripts/audit-plugin-hooks-cross-platform.mjs) - enforces no /bin/bash, no POSIX-only pipelines, no .sh references
- 3 new CI smoke jobs on ubuntu + macos + windows-latest matrix for shim invocation, init-generated settings, and end-to-end hook execution
Full Release Notes
## Highlights
**Windows plugin hooks** now work natively without WSL / Git Bash (#2132).
Reporter @marioja documented every offending plugin hooks.json file: `/bin/bash -c` invocations, POSIX-only pipelines (jq, xargs -0, tr), and .sh shim scripts that crashed on native Windows with exit 126 ("cannot execute binary file").
### What shipped
- **Node shim**: new `plugins/ruflo-core/scripts/ruflo-hook.cjs` (and copies in `.claude-plugin/scripts/` and `plugin/scripts/`) ā cross-platform port of the bash shim, reads stdin JSON via Node, dispatches via child_process.spawn, always exits 0
- **Init-time platform detection**: `ruflo init` on Windows now writes a `.claude/settings.json` that overrides plugin bash hooks with node-based equivalents
- **Mac/Linux unchanged**: existing `ruflo-hook.sh` and plugin `hooks.json` byte-identical ā Windows path is purely additive
### CI validation
- Static audit: `scripts/audit-plugin-hooks-cross-platform.mjs` enforces no `/bin/bash`, no POSIX-only pipelines, no `.sh` references in plugin hooks
- 3 new smoke jobs on **ubuntu + macos + windows-latest** matrix: shim invocation, init-generated settings, end-to-end hook execution (proves no exit-126)
- Test baseline preserved: 1999 passing | 46 skipped throughout
### Versions
- `@claude-flow/cli@3.10.1`
- `claude-flow@3.10.1`
- `ruflo@3.10.2`
All dist-tags (latest + alpha + v3alpha) updated.
š¤ Generated with [RuFlo](https://github.com/ruvnet/ruflo)