v3.54.0

lhl/voicechat2v3.54.0Oct 7, 2026by ruvnet

Upgrading?

AI Summary

Release introducing console improvements, measured control plane, and a default recall log.

Key Highlights

  • Console 0.35.0 adds persistent history and layout fixes.
  • Control plane is now measured with accurate timing and permission checks.
  • Recall log is enabled by default to track surfaced memories.
  • Incremental transcript parsing performance improved.

New Features

  • Default recall log for surfaced memories (ids, scores, ranks, prompt digest).
  • Console 0.35.0 persistent history in `.claude-flow/console/`.

Full Release Notes

## Ruflo 3.54.0

### Console 0.35.0
- Layout fixes on the Workflows page: breadcrumbs, a clipped run id, button rows and the tab row.
- Replay now plays on its own clock.
- The control plane is now measured (Claude Code 2.1.289), not assumed:
  - Stopping a workflow run works with the Workflow tool's task id, read from the launching session's transcript. The earlier version used the wrong id: the `wf_` run id and the agent ids inside a run are refused by the engine.
  - A message to a running workflow agent is delivered in about 28 ms and acted on in about 1.6 s. To a named Agent-tool agent it lands at its next turn.
  - Permission dialogs are never bypassed. A mod cannot launch a workflow through `$.tool.call`.
- The mission autopilot is complete and was run live in a throwaway repo: envelope editor, bounded parallel hand-over, an honest spend estimate, and a band segment. The live run cost $0.356 on haiku and confirmed that Start asks first, verification runs, an out-of-envelope task is parked and never run, Stop takes 0.2 s, and a `kill -9` resume does not double-execute. Seven defects found live were fixed. Not exercised live: parallel hand-over, spend ceilings and the Anatole gate.
- Incremental transcript parsing: appending 50 lines to a 3 MB transcript went from about 38 ms to about 0.4 ms.

### npm packages carry new behaviour
- **Recall log, ON by default.** The intelligence hook now records which memories it surfaced (ids, scores, ranks and a 16-hex digest of the prompt, never the prompt text) in `.claude-flow/data/recall-log.jsonl`. It rotates at 1 MiB and stays local. Opt out with `RUFLO_RECALL_LOG=0` or `recallLog.enabled=false` in `claude-flow.config.json`.
  - Caveat: ids embed slugified memory headings.
  - Caveat: a short, predictable prompt can be confirmed by guessing against its digest.
- `memory list --embeddings` (read-only, 500 rows, int8) feeds the console's memory map.

### How the console reaches you
Through the git marketplace, not the npm tarballs:
```
claude plugin marketplace update ruflo
claude plugin update ruflo-console@ruflo
```
Then restart Claude Code.

### Known limits
- About 190 ms of extra plugin load per start.
- Running all 25 kit tests at once under heavy load makes tests 3-8 time out at their own 5 s limits. The sequential runner `plugins/ruflo-console/scripts/kit-seq.sh` passes 216/216.
- The recall log appears only after helpers refresh to this release.
- Federation peer dispatch and OpenRouter itself were never called for real.
- 6 type errors remain in files other lanes own.

Related Repositories