v3.30.0

ruvnet/ruflov3.30.0Jul 14, 2026by ruvnet

AI Summary

A minor release introducing spinner verbs, startup announcements, and a developer revenue-share scaffold.

Key Highlights

  • Default ON spinner verbs (37 curated verbs) added to Claude Code settings.
  • Opt-in startup announcements mechanism for Claude Code sessions.
  • Developer revenue-share scaffold (Phase 0) for Cognitum-sponsor rev-share.
  • First-run auto-enable mechanism with multiple env-var escape hatches.
  • Fixes for concurrent-session helper clobber and statusline URL suffix.

New Features

  • Spinner verbs subcommands
  • Startup announcements subcommands
  • Revenue-share scaffold CLI commands
  • Helper locking mechanism

Full Release Notes

## Highlights — ADR-317, ADR-318, ADR-319

**Three new placement surfaces** for ruflo, sibling to the existing statusline promo row:

### 1. Spinner verbs (`ruflo spinner …`) — DEFAULT ON

Ruflo appends its own curated \"present-participle\" verbs to Claude Code's `spinnerVerbs.verbs[]` in `~/.claude/settings.json`, so the ✽ Channeling… rotation mixes ruflo verbs with Claude Code's built-ins. 37 verbs across memory, optimization, learning, security, agents, workflow + Cognitum-tagged categories. **Default posture: ON** for new installs and upgrades (opt-out via `RUFLO_NO_AUTO_ENABLE=1` or `ruflo spinner disable`).

Sample additions: `Consulting the memory graph`, `Warming the HNSW index`, `Auditing for CVEs`, `Consulting Cognitum`.

### 2. Startup announcements (`ruflo announcements …`) — OPT-IN

Similar mechanism for Claude Code's `companyAnnouncements` — 12 curated entries shown at Claude Code startup, one per session. Higher intrusion profile than spinner (prominent line vs. per-spin flash), so opt-in via `RUFLO_AUTO_ENABLE_ANNOUNCEMENTS=1` or `ruflo announcements enable --yes`.

### 3. Developer revenue-share (`ruflo funnel enroll/earnings/unenroll`) — Phase 0 scaffold

Client-side skeleton for the 50/50 Cognitum-sponsor rev-share. Response to \"can we do something similar to kickbacks.ai?\" — yes, and 60-70% of the plumbing (attribution, consent, rotation) already existed. This ships the CLI subcommands + consent domain + attribution token wiring. Backend enrollment + Stripe Connect are Phase 1 (blocks on legal).

## First-run auto-enable mechanism (`session-restore` hook)

Fires once per install (marker at `~/.ruflo/first-run-enabled.json`), then never again. Multiple env-var escape hatches: `RUFLO_NO_AUTO_ENABLE`, `RUFLO_NO_AUTO_ENABLE_SPINNER`, `RUFLO_AUTO_ENABLE_ANNOUNCEMENTS`. Skips in CI + non-TTY. Detached spawn — session-restore latency unchanged. One-line stderr notification names exactly what got enabled and how to disable.

## Fixes bundled

- **Concurrent-session helper clobber** (documented in CLAUDE.md): new `.claude/helpers/.LOCKED` marker + `RUFLO_HELPERS_LOCKED=1` env opt-out. Users editing helpers directly can now protect their dev tree from being overwritten by sibling Claude Code sessions running stale cached `@claude-flow/cli`.
- **Statusline URL suffix** correctly emits again (bug where concurrent-session corruption had wiped it earlier).

## Upgrade notes

Every existing user upgrading past v3.29.x will see spinner verbs added to their `~/.claude/settings.json` on their next Claude Code session (with backup + notification + one-command undo). Set `RUFLO_NO_AUTO_ENABLE=1` before upgrading if you don't want this.

## Related

- PR [#2676](https://github.com/ruvnet/ruflo/pull/2676) — everything above
- Tech-debt: [#2679](https://github.com/ruvnet/ruflo/issues/2679) — sync `statusline-generator.ts` with the committed helper's #2195 delegation build
- Related issue: [#2677](https://github.com/ruvnet/ruflo/issues/2677) — @stuinfla's excellent report on `doctor --component memory` being existence-only

## Install

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