v3.10.42
ruvnet/ruflov3.10.42Jun 11, 2026by ruvnet
AI Summary
Patch release fixing three reproducible community bugs: Windows path validation in hooks post-edit, trajectory feedback not being distilled, and init hooks subcommand not writing the hooks block to settings.json.
Key Highlights
- Fixed Windows path validation - validatePath was rejecting absolute Windows paths due to SHELL_META including backslash
- Fixed trajectory-end feedback distillation - feedback without steps was persisted but never embedded as searchable patterns
- Fixed init hooks subcommand - helpers now ship with the subcommand so hooks block is written to settings.json
- CLI action now checks result.success and exits non-zero on failure
- New feedbackDistilled.patternId and feedbackDistilled.controller fields on trajectory-end response
New Features
- Windows path acceptance in validate-input-path-2352 (22 tests)
- Feedback distillation through bridge.bridgeStorePattern tagged as trajectory-feedback
- Helpers bundled with init hooks subcommand
Full Release Notes
Patch release fixing three reproducible community bugs reported by @grym3s, batched in the style of v3.10.41 / PR #2346.
## Fixes
### #2352 — `hooks post-edit`: Windows paths rejected, failure printed as `[OK]`
- `validatePath` used the general `SHELL_META` set which includes `\`, so every absolute Windows path (`E:\Repos\…`) failed with `"shell metacharacters"`. Claude Code hook events deliver absolute paths in `tool_input.file_path`, so every forwarded `post-edit` call failed silently on Windows.
- The CLI action printed `[OK] Outcome recorded for …` whenever the MCP call returned at all, masking the failure. Now checks `result.success`, surfaces the error, and exits non-zero.
### #2351 — `trajectory-end`: step-less feedback never distilled
When `trajectory-end` is called with `feedback` but no recorded steps (the common LLM-agent case), the feedback was persisted with the trajectory but never embedded as a searchable pattern — `patternsExtracted` always reported 0 and `pattern-search` never surfaced it. Now routes the trimmed feedback through `bridge.bridgeStorePattern` (or store-fallback) with modest default confidence, tagged `trajectory-feedback`. New `feedbackDistilled.{patternId, controller}` field on the response.
### #2350 — `init hooks`: subcommand wrote no hooks block to `settings.json`
The settings generator gates the `hooks` block on `components.helpers` (the hook commands point at the helper script). The `init hooks` subcommand had `helpers: false`, so the one subcommand whose purpose is *"Initialize only hooks configuration"* produced `settings.json` with no `hooks` key while reporting `"N hooks enabled"`. Helpers now ship with the subcommand.
## Install / upgrade
```bash
npx ruflo@latest init # 3.10.42
npx @claude-flow/cli@latest # 3.10.42
```
All three packages (`@claude-flow/cli`, `claude-flow`, `ruflo`) and all three dist-tags (`latest`, `alpha`, `v3alpha`) are pinned to 3.10.42.
## Tests
- New `validate-input-path-2352.test.ts` — 22 tests pin Windows-path acceptance, POSIX still works, all shell metacharacters and traversal still rejected.
- All existing `validate-input`, `init-wizard-bugs`, `hooks-intelligence-learning`, `hooks-post-task` tests still pass.
## Diff
PR #2355 · main…v3.10.42
🤖 Generated with [RuFlo](https://github.com/ruvnet/ruflo)