v3.28.0
ruvnet/ruflov3.28.0Jul 14, 2026by ruvnet
AI Summary
A minor release closing root-fix gaps related to repository supervision, telemetry, and budget control.
Key Highlights
- Repository-level supervisor and worktree leases to manage AI worker schedules.
- Structured per-launch token telemetry via JSON envelope parsing.
- New 'ruflo daemon budget' subcommands for independent budget control.
- One-time upgrade migration warning for multi-daemon fleets.
- Fixed transitive dependency fragility by inlining a version resolver.
New Features
- Repository supervisor implementation
- Token telemetry parsing
- Daemon budget control commands
- Migration warning system
Full Release Notes
## Highlights Closes the four remaining root-fix gaps from #2661 (PR #2663): 1. **Repository-level supervisor + worktree leases** (`workspace-lease.ts`, `repo-supervisor.ts`) — exactly one daemon per repository is elected supervisor and owns the recurring AI-worker schedule; every other worktree stays a lease-only participant (15-min TTL heartbeat) running cheap local-only workers. An explicit `daemon trigger --headless` still bypasses the gate (one-off user action, still budget/dedup-governed). 2. **Structured per-launch token telemetry** — `claude --print --output-format json`, parsed leniently via `parseClaudePrintJsonEnvelope()`, receipted through `GlobalAiBudget.recordUsage()`. Any schema mismatch degrades to "no usage captured," never breaks existing analysis-output parsing. 3. **`ruflo daemon budget show|pause|resume`** — independently scriptable budget control surface. 4. **One-time upgrade migration warning** — a pre-existing multi-daemon fleet with AI workers already enabled warns exactly once ever. `daemon status --all` gains a "Repository Supervisors" panel. Also fixes a real transitive-dependency fragility: `statusline-generator.ts` no longer pulls in the `semver` package just to resolve the CLI's own version — inlined a minimal, dependency-free version resolver instead. ## Test plan - 54 new tests across `workspace-lease`, `repo-supervisor`, `claude-print-envelope`, `global-ai-budget`, `daemon-migration-warning-2661` - 636 relevant tests passing locally (services + daemon + commands-deep) - Full CI green on [PR #2663](https://github.com/ruvnet/ruflo/pull/2663) (one flaky, unrelated timing test in `@claude-flow/hooks`'s trajectory-graph smoke passed on rerun) ## Packages | Package | Version | |---|---| | `@claude-flow/cli` | 3.28.0 | | `claude-flow` | 3.28.0 | | `ruflo` | 3.28.0 |