v3.30.1

ruvnet/ruflov3.30.1Jul 14, 2026by ruvnet

AI Summary

A patch release fixing a statusline generator drift issue where the generator was out of sync with the committed helper file.

Key Highlights

  • Statusline generator now reads '.claude/helpers/statusline.cjs' as the single source of truth.
  • Substitutes two known values ('maxAgents', 'bakedVersion') automatically.
  • Fixes drift between generator and committed helper file.
  • CI static-regression guards updated to prevent future sync drift.
  • Fresh installs now receive the v3.29.0-era helper with full delegation support.

New Features

  • Statusline generator delegation fix
  • Automated helper synchronization

Full Release Notes

## What

PATCH release closing #2679 — the statusline generator drift discovered during the v3.30.0 release flow.

## Fix

\`generateStatuslineScript()\` in \`v3/@claude-flow/cli/src/init/statusline-generator.ts\` no longer inlines a 1000-line template string. It now READS \`.claude/helpers/statusline.cjs\` as its single source of truth and substitutes two known values (\`maxAgents\`, \`bakedVersion\`). Every future edit to the helper propagates to \`ruflo init\` output automatically — no manual sync required.

## Impact

- **Fresh installs / re-inits**: get the current v3.29.0-era helper (whole-row-clickable OSC 8, \`(domain)\` suffix, ellipsis on truncation, bright-white bold command styling, 300s cache TTL, \`windowsHide\` on every subprocess spawn) instead of the pre-#2195 non-delegation shape that the generator had frozen at.
- **Existing installs**: unchanged. The deployed helper is already correct; this fix only affects new \`ruflo init\` writes.

## CI

Three static-regression guards updated for the read-and-substitute pattern:
- \`.github/workflows/v3-ci.yml\` — statusline generator delegation smoke
- \`scripts/audit-fix-invariants.mjs\` — #2196 delegation invariant + NEW #2679 sync invariant
- \`scripts/smoke-statusline-generator-delegation.mjs\` — Layer 1 static contract

Each now greps the HELPER for the delegation content (where it now lives) with a paired assertion that the generator still reads it. Drift on either side of the sync is caught.

## Related

- PR [#2680](https://github.com/ruvnet/ruflo/pull/2680) — the fix
- Issue [#2679](https://github.com/ruvnet/ruflo/issues/2679) — closed
- v3.30.0 release (\`74bc81f8e\` / \`fea1d9e95\`) — where this drift was first surfaced

## Install

\`\`\`bash
npx ruflo@latest init
# or
npm install -g @claude-flow/cli@3.30.1
\`\`\`