Skip to content

v3.28.0 β€” #2661 root-fix: repository supervisor, telemetry, budget CLI, migration warning

Choose a tag to compare

@ruvnet ruvnet released this 14 Jul 05:36

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 (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