## zeroclaw-labs/zeroclaw — v0.8.0…v0.8.1

_209+ commits._

### Features
- **feat(cost): support cached input token pricing from OpenAI-compatible (#7492)** (db8051e)
- **feat(channels/discord): typed slash-command options + chunked interaction followups (#7844)** (f96689d)
- **feat(cli): agents/providers/channels CRUD + skill-bundle cascade (#7468/#7175) (#7842)** (350feab)
- **feat(gateway): agent owned-state rename cascade + rename wiring (#7468) (#7841)** (2d37d54)
- **feat(config): rename_with_cascade for aliased entries (#7468) (#7840)** (5a19902)
- **feat(config): delete_with_cascade for channels (#7175) (#7839)** (711de3e)
- **feat(gateway): agent owned-state cascade on delete (#7175) (#7838)** (3a1c9bd)
- **feat(zerocode): add doctor pane (#7802)** (1a4ba77)
- **feat(channels/whatsapp): send Web media markers natively (#7811)** (b1831f9)
- **feat(web): support slash commands in gateway web chat input (#7223)** (91bfc6f)
- **feat(security): add agent posture status command (#7321)** (c8f9fb8)
- **feat(config): delete_with_cascade for agents (#7175) (#7837)** (5099292)
- **feat(channels): include Discord in the default-channels bundle (#7825)** (8ec409b)
- **feat(config): delete_with_cascade for model providers (#7830)** (527100b)
- **feat(providers): re-add Manifest under schema v3 provider system (#7791)** (67c9d6c)
- **feat(runtime): expose session key to shell tools as ZEROCLAW_SESSION_ID (#7813)** (7e4b6c7)
- **feat(config): find_all_references/plan_delete foundation for typed delete-with-cascade (#7175) (#7785)** (6dbd881)
- **feat(memory): extend hygiene to prune daily and core DB rows (#7081)** (56e5bac)
- **feat(gateway): route inbound webhooks per channel alias (#7367)** (11142ee)
- **feat(eval): Phase 0 agent eval harness, deterministic replay (#7067)** (9afcfa3)
- **feat(providers): add NEAR AI Cloud provider (#6842)** (c902e18)
- **feat(doctor): list configured models in `models list`/`doctor`; add `--check`; collapse probe rows (#7450)** (7adc11d)
- **feat(providers)!: span attribution — route model provider calls through attribution dispatcher (#7748)** (6b4ac43)
- **feat(skills): expose frontmatter tags in the editor + slash-command toggle (#7734)** (d2857a2)
- **feat(web): Operator Console redesign of the gateway web UI (schema-driven config, multi-agent chat, ported fixes) (#7665)** (62655f9)
- **feat(channels/discord): record inbound reactions behind a scope config (#7526)** (14d4c1b)
- **feat(channels/discord): dynamic slash commands from installed skills (#7490)** (8517a1e)
- **feat(obs): instrument runtime memory ops with OTel GenAI spans (#7570)** (9dab45d)
- **feat(channels/discord): slash commands over the existing Gateway WebSocket (#7489)** (ccaa245)
- **feat(channels/slack): backfill thread context on first agent encounter (#6428)** (b7d3636)
- **feat(plugins): add wasmtime dependency and feature flags (#7429)** (15ab9f1)
- **feat(mcp): auto-reconnect on stale session or dropped stream (#7351)** (cd8aeb3)
- **feat(azure): wire reasoning_effort into dedicated Azure OpenAI provider (#7350)** (334ab88)

### Fixes
- **fix(cli): flag configured channels missing from binary (#7848)** (6c95156)
- **fix(provider): trace native tool delivery decisions (#7933)** (3b34912)
- **fix(runtime): route stdout diagnostics through logs (#7934)** (9234ede)
- **fix(tests): cover Windows path and shell portability (#7906)** (6f71b54)
- **fix(runtime): auto-include discovered MCP tools in risk_profile allowed_tools (#7547)** (9ba5d75)
- **fix(runtime/agent): move credential redaction to the rendering layer (#7826)** (89e24cc)
- **fix(zerocode): refresh agent picker on Code/Chat tab re-entry (#7834)** (0655af3)
- **fix(runtime): honor profile tool iteration limits (#7583)** (c8de92a)
- **fix(cli): suggest available gateway port on bind conflict (#7801)** (05f6659)
- **fix(runtime): replay ACP session history in session/messages (#7903)** (a2a8255)
- **fix(acp): surface history-pruner and turn-cancel as visible events (#7684)** (aaaa4b1)
- **perf(docs): publish rustdoc once, dedupe per-locale assets, drop print pages (#7754)** (d45f54c)
- **fix(runtime): thread shared CanvasStore into WS chat and ACP agent sessions (#7678)** (3451c99)
- **fix(runtime): forward trimming budgets through agent_turn wrapper (#7780)** (4c5d421)
- **fix(zerocode): enforce RPC-only boundary by dropping zeroclaw-providers (#7850)** (621e329)
- **fix(runtime): skip response-cache for multimodal [IMAGE:] markers (#7779)** (df78ad8)
- **fix(web): render integration category labels (#7662)** (3a5469c)
- **fix(lark): add per-channel ack_reactions override for Lark/Feishu (#7495)** (7f57cc4)
- **fix(providers): normalize Azure OpenAI credentials (#7703)** (a244513)
- **fix(web/deps): force js-yaml >=4.2.0 to patch merge-key DoS (#7761)** (96b8c3b)
- **fix(tools): reject binary/image files in default file_read instead of lossy text (#7522)** (91b0bd7)
- **fix(channels): dedupe QQ voice redeliveries (#7648)** (e0ad6b5)
- **fix(providers): retry email OAuth refresh failures (#7745)** (209688e)
- **fix(providers): stop reasoning_content from leaking into response text (#7725)** (4ee97ae)
- **fix(providers): preserve structured Bedrock tool results (#7712)** (1cdf1c1)
- **fix(provider): redact reliable error endpoints consistently (#7682)** (2069478)
- **fix(daemon): allow any configured channel as heartbeat.target (#7680)** (b4194dc)
- **fix(agent): emit pending tool_call at dispatch so live cards render (#7778)** (9a73b30)
- **fix(gateway): surface pairing-code recovery when already paired on an alternate port (#7798)** (99fcc49)
- **fix(security): create per-agent workspace dir in for_agent (+ Android shell support) (#7284)** (f959860)
- **fix(update): accept .zip release assets on Windows targets (#7530)** (9838f4c)
- **fix(ci): centralize Node.js version to .nvmrc with LTS 24 (#7550)** (905380d)
- **fix(tools): fix Claude Code execution on Windows (#7214)** (c97e4a8)
- **fix(memory): drop postgres client on OS thread to avoid nested runtime panic (#7668)** (1e4709c)
- **fix(docker): include zerocode binary in release Docker images (#7789)** (a4eb11b)
- **fix(skills): parse skill review summary from tool history (#7730)** (c264427)
- **fix(doctor): surface Config::collect_warnings in diagnostics (#7727)** (7d81c25)
- **fix(zerocode): use grapheme clusters for backspace and cursor movement (#7765)** (33f456b)
- **fix(i18n): auto-detect system locale when none is configured (#7760)** (afd9235)
- **fix(config): gate test-only EnvValueGuard on cfg(unix) (#7777)** (d3f4446)
- **fix(config): align serde defaults with struct Default to prevent save round-trip loss (#7532)** (0573d85)
- **fix(zerocode): localize config status messages (#7713)** (492c980)
- **fix(config): trim legacy typed scalar strings (#7714)** (c6d46cf)
- **fix(runtime): condition anti-narration on show_tool_calls config (#7722)** (9d003d4)
- **fix(whatsapp_storage): return HashState::default() when no app-state version row exists (#7806)** (37ba130)
- **fix(runtime): recover poisoned activated-tool lock reads (#7755)** (1b6390c)
- **fix(channels/slack): make bot_token optional and resolve from env (#7726)** (e398643)
- **fix(skills): distinct error when skill_manage patch is disabled (#6684)** (4774dba)
- **fix(docs): clear rustdoc warnings surfaced by mdbook build (#7751)** (a68a617)
- **fix(cli): route remaining status output through Fluent (#7499)** (77b536f)
- **fix(cron): honor session_target=main with stable session path (#7731)** (6fe8802)
- **fix(runtime): return no heartbeat runs for zero limit (#7721)** (b350c74)
- **fix(channels): require IRC mention boundaries (#7710)** (99ee2f7)
- **fix(channels): add clear session command (#7671)** (4af7b69)
- **fix(cli): preserve utf8 erase handling (#7672)** (068634c)
- **fix(telegram): validate API base URL default (#7697)** (fb3d0f2)
- **fix(memory): include recall windows in retrieval cache key (#7656)** (4a8303e)
- **fix(channels/email): stabilize missing message ids (#7767)** (48b154b)
- **fix(runtime): route native tool narration to stderr (#7773)** (17e60c3)
- **fix(runtime): resolve runtime profiles for direct turns (#7792)** (68b796f)
- **fix(memory): disable hot response cache at zero capacity (#7704)** (de24b92)
- **fix(ci): narrow Kilo provider path label (#7812)** (1eeada9)
- **fix(runtime): restore native sandbox hardening (#7683)** (34107bb)
- **fix(channel/matrix): persist thread history after first reply (#7705)** (53facb3)
- **fix(runtime): redact unquoted base64 credentials (#7660)** (9854566)
- **fix(config): expose global channel settings in dashboard (#7651)** (2a93180)
- **fix(runtime): detect no-progress loops across interleaved tool calls (#7681)** (2850508)
- **perf(skills): cache skill-directory loads (content-validated, audit-correct) (#7786)** (4a9d4db)
- **fix(discord): persist slash reconcile state + read shared stores from data_dir (#7784)** (a484a1f)
- **fix(tools): reject excessive round precision (#7716)** (dab313a)
- **fix(tools): default zero-minute polls (#7707)** (6d3387c)
- **fix(tools): encode weather location path input (#7717)** (f2584e3)
- **fix(runtime): keep pruned tool markers out of live context (#7775)** (883164e)
- **fix(providers): remove dead pre-normalization image trim and its misleading log (#7782)** (bb34f21)
- **fix(memory): purge_agent must resolve alias→id before deleting (#7781)** (162845e)
- **fix(channels/amqp): make health_check probe the broker (#7596)** (56bd295)
- **fix(gateway): fail fast on free-form ask_user for WS approval channel (#7551)** (1d98ae6)
- **fix(web): show and switch the agent's own model on the agent chat page (#7381)** (b882276)
- **fix(quickstart): localize remaining CLI strings (#7650)** (6e209dc)
- **fix(ci): unbreak master quality gate (#7696)** (75195f2)
- **fix(install): detect musl libc for Linux target triple (#7614)** (a2e3138)
- **fix(quickstart): validate agent and provider aliases at input time (#7609)** (4bcf4fc)
- **fix(runtime): expose deferred MCP tools to delegates (#7608)** (5468f89)
- **fix(config): warn on extra-nested provider alias tables (#7580)** (6a2f115)
- **fix(runtime): route service commands to named instances (#7579)** (ca0f372)
- **fix(gateway): route chat workspaces per agent (#7573)** (52ef01c)
- **fix(channels/whatsapp-web): forward quoted media attachments (#7536)** (6dc93df)
- **fix(zerocode): avoid hardcoded vi editor fallback (#7476)** (4d778d3)
- **fix(channels): telegram delivery prompt no longer discourages tool use (#7438)** (d382cd3)
- **fix(providers): preserve compatible reasoning field name on multi-turn replay (#7423)** (4298e9f)
- **fix(skills): sanitize skill tool names to satisfy provider name regex (#7399)** (afe6db0)
- **fix(runtime): honor empty delegate allowed tools (#7574)** (c3c6e38)

### Tests
- **test(config): cover comment writer end-to-end behavior (#7766)** (0062ef4)
- **test(providers): cover native OpenAI timeout forwarding (#7699)** (9c8dc25)
- **test(providers): cover Gemini current projectId fallback (#7698)** (f9d688c)
- **test(channels): reject non-web WhatsApp cron delivery (#7709)** (825a70d)
- **test(runtime): cover Windows shell code page decoding (#7670)** (15b0aed)
- **test(runtime): cover RPC approval lifecycle cleanup (#7677)** (ae08335)
- **test(gateway): cover public event history filtering (#7719)** (299e84f)
- **test(skills): cover skill_manage patch cooldown gate (#7679)** (5afcf06)

### Docs
- **docs(i18n): refresh fluent strings and mdbook catalogs for v0.8.1 (#7939)** (6790af5)
- **docs(readme): sync installer options (#7708)** (bb52955)
- **docs(squash-merge): extend skill with CI check and issue→merge workflow (#7752)** (c4580fa)
- **docs(ci): reflect merge queue disabled on master (#7783)** (f88b0eb)
- **docs(setup): mention Linux uninstall script (#7715)** (f0053c7)
- **docs(book): sync generated reference command (#7711)** (5240c02)
- **docs(contributing): add first-party extension architecture guide (#7788)** (4807491)
- **docs(governance): define discussions stewardship (#7654)** (1dd9f18)
- **docs(governance): add issue intake forms (#7652)** (bd79604)

### Chore
- **chore(release): bump version to 0.8.1 (#7938)** (c1528cb)
- **refactor(channels/discord): split discord.rs into a module tree behind a structured outgoing payload (#7832)** (abfae1e)
- **refactor(zeroclaw-tools): extract duplicate domain/URL validation int… (#7340)** (4d453a8)
- **refactor(api): make before_llm_call take mutable borrows (#7667)** (c029388)
- **ci(workflows): run macOS and Windows build legs as cargo check (#7669)** (140d9d1)
- **chore(docs): make gh-pages ephemeral to bound clone size (#7676)** (4bd2cba)
- **refactor(channels): tighten Nextcloud Talk draft updates (#7572)** (4102311)
- **chore(deps): bump esbuild, @tailwindcss/vite, @vitejs/plugin-react and vite in /web (#7569)** (f75bc5a)

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