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)