## ruvnet/ruflo — v3.52.0…v3.52.1

_46 commits._

### Features
- **feat(console): band notices, tone border, /ruflo band|notices|quiet (0.33.23)** (616a7eb)
- **feat(ruflo-console): Project Anatole section in Security & Doctor (0.33.23)** (f80c158)
- **feat(ruflo-console): the band shows how long Claude has been working, the tool-call rhythm and the context gauge (0.33.24)** (b2d030c)
- **feat(ruflo-protector): Project Anatole plugin, tests, corpus gate, bench, fleet registration** (06d38d0)
- **feat(ruflo-protector): Project Anatole plugin core (WIP)** (bccd1a3)
- **feat(ruflo-console): the ask-first confirm is one bordered card with a header, a rule and labelled sections (0.33.20)** (dc1ada1)
- **feat(ruflo-console): the Security view's text field sits in a round border (0.33.19)** (feb42e2)
- **feat(ruflo-console): Claude can read the console by default — modelControl read, modelConfirm ask (0.33.18)** (e8384b5)

### Fixes
- **Merge pull request #3826 from ruvnet/fix/console-learning-pulse** (946f991)
- **Merge pull request #3813 from ruvnet/fix/console-sentry-start** (8eda19d)
- **fix(ruflo-console): keep the Router's running-success curve (an existing test and feature); only explain why it is empty** (4d60958)
- **fix(ruflo-console): the Router block says why it is empty and does not stretch a flat curve over nine outcomes** (878dae1)
- **fix(ruflo-console): the Learning pulse charts mean one thing each and line up (0.33.22)** (84b7be3)
- **fix(ruflo-console): smoke step 12 accepts the excluded list as well as the CI baseline for kit tests** (1a2318f)
- **fix(ruflo-protector): status.json carries version 1 and the *Ms times the Mods scan needs; the console maps the plugin to Security & Doctor** (da60cdf)
- **fix(ruflo-console): the Optimizer's answer panel is framed like every other result** (345ad25)
- **fix(ruflo-console): results read markdown as text: pipe tables drawn aligned, headings, bullets, bold, code and links tidied** (6fd0a78)
- **fix(ruflo-console): sentries start /loop as a command, and every result is a bordered status card with aligned tables (0.33.21)** (d1d4dab)
- **Merge pull request #3809 from ruvnet/fix/ci-test-ratchet** (fdc4dfa)
- **fix(ci): the test ratchet no longer runs files vitest cannot run (71 plugin kit tests and node:test files)** (668ee8d)
- **Merge pull request #3800 from ruvnet/fix/mods-3787-3790** (cb857d4)
- **fix(ruflo-mods): trust gate counts prompt.submit and agent.spawn as risky; ranked context drops control and bidi characters (0.3.13)** (408c3e5)
- **Merge pull request #3796 from ruvnet/fix/console-3788-3789** (d426017)
- **fix(ruflo-console): a Dev Tools entry's own cost is the floor of its class; jsonAfter stops at the JSON's own end (0.33.17)** (8612da1)

### Backend
- **Merge pull request #3829 from ruvnet/release/3.52.1** (ca42128)
- **Merge pull request #3830 from ruvnet/feat/console-band-notices** (bf3dd54)
- **release: 3.52.1** (7c10c9e)
- **Merge pull request #3827 from ruvnet/feat/console-band-live** (97eb78c)
- **Merge pull request #3828 from ruvnet/feat/anatole-console-pr** (975b04b)
- **Merge pull request #3824 from ruvnet/feat/agentic-protector** (830faa3)
- **merge origin/main (console 0.33.21); version per merge order** (6ab6b39)
- **merge origin/main (console 0.33.21); version per merge order** (87dcddc)
- **merge origin/main (console 0.33.21); version per merge order** (80d82dc)
- **merge origin/main into the sentry/results PR (excluded-test list: keep both sides)** (baf97eb)
- **Merge pull request #3825 from ruvnet/feat/anatole-plugin** (fca72fb)
- **Merge remote-tracking branch 'origin/main' into feat/anatole-plugin** (f63a849)
- **Merge pull request #3812 from ruvnet/feat/console-confirm-card** (fb6009f)
- **merge origin/main (0.33.19 security field border) into the confirm card; version 0.33.20** (2d7ef5d)
- **Merge pull request #3811 from ruvnet/feat/console-security-field** (97c71eb)
- **Merge pull request #3808 from ruvnet/feat/console-control-default** (718dac7)

### Tests
- **test(ruflo-console): a result renders in the real engine as an aligned table with markdown read as text, inside a result frame** (ee772e7)

### Docs
- **docs(adr): ADR-453 contract fixes from the build: status.json also carries version:1, startedMs and updatedMs (the Mods scan requires them); rules.json demoted flag; alert id format; hits derived from alerts** (7324d3b)
- **docs(adr): name the agentic protector Project Anatole (this feature only)** (ddce80e)
- **docs(adr): ADR-453 the agentic protector, an optional learning watchdog for unattended agents (Proposed)** (4251f31)

### Chore
- **ci: the protector kit tests run under claude plugin test, not root vitest** (aa1825d)
- **ci: the new result-display kit test runs under claude plugin test, not root vitest** (3fc617f)

_Recap by [Repo Wrapped](https://repowrapped.com/gh/ruvnet/ruflo?utm_source=github-action)._