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

_155+ commits._

### Features
- **feat(auth): add email-login subcommand for OAuth2 email channel auth (#8008)** (23c3206)
- **feat(auth): add xAI OAuth login support (#7945)** (35af98f)
- **feat(observability): opt-in LLM request payload capture (default off) (#8066)** (730766a)
- **feat(observability): correlate logs by trace_id + record per-call cost_usd (#8065)** (c8c2921)
- **feat(zerocode): improve zerocode user interface (#8000)** (2821e16)
- **feat(channels): restore Matrix room management tool (#8068)** (11b0a04)
- **feat(channels): restore per-sender /thinking overrides (#8011)** (df62b03)
- **feat(sop): durable SQLite run-state store and live run metrics (#8206)** (bbd7b9a)
- **feat(runtime): suggest cached extra registry skills (#8185)** (2113a2a)
- **feat(knowledge): restore client relationship graph actions (#8182)** (c6906da)
- **feat(channels/lark): restore outbound media markers (#8113)** (b980e3a)
- **feat(plugins): add SSRF guard to zc_http_request host function (#8128)** (18ad9a5)
- **feat(plugins): scope plugin config per-alias and remove raw env access (#8137)** (5b46847)
- **feat(sop): frame untrusted trigger payloads before the model prompt (#8215)** (31dcb67)
- **feat(turn): add ResolvedAgentExecution::resolve and route prod turn paths (#8179)** (63e0ef5)
- **feat(runtime): durable run/task control-plane + delegate/subagent supervision (#8217)** (607d69e)
- **feat(docs): move translation catalogues to git submodule (#8169)** (b3bab65)
- **feat(gateway): A2A agent discovery surface (#7763)** (295a77d)
- **feat(presets): redefine Balanced as the trusted-local daily driver (#8133)** (a6a5997)
- **feat(zerocode): add Aliases/Costs tabs to provider alias list (#8006)** (d19167b)
- **feat(web): themed click-to-open config pickers (Select primitive) (#8086)** (df255e7)
- **feat(web): dashboard component-health "fix in place" modal (#8087)** (2ee5906)
- **feat(sop): add SopRunStore trait + in-memory backend (EPIC B scaffold) (#8001)** (a3b8201)
- **feat(security): Principal type + AuthProvider seam (#7141) (#8063)** (2b83417)
- **feat(channels/whatsapp): add allowed_groups per-JID group allowlist for Web mode (#7720)** (ba46f82)
- **feat(skill-tool): expose ZEROCLAW_SESSION_ID to skill shell tools (#8035)** (8043f28)
- **feat(skills): user-configured extra skill registries via registry:<name>/<skill> (#7827)** (8e9e632)
- **feat(slack): upload outbound attachments (#7170)** (c408422)
- **feat(gateway/cron): accept enabled on CronPatchBody for pause/resume; scope the agent check to shell-command patches (#7666)** (e3d0b51)
- **feat(observability): categorize and verb-tag agent-loop log events (#8067)** (592daa9)
- **feat(xtask): drive container base pins from a canonical TOML (#8005)** (a0bf350)
- **feat(channels/discord): slash command localizations + guild scope (#7922)** (eb6f1a4)
- **feat(install): add zeroclaw to PATH automatically, with --no-modify-path opt-out (#8038)** (f402d42)
- **feat(channels): scope-selectable `/model` overrides (user/agent) for chat channels (#7998)** (a57ddd0)
- **feat(skills): typed slash-command options in SKILL.md frontmatter (#8021)** (3a977be)
- **feat(channels/discord): interaction components — buttons, selects, modals, buttoned approval, autocomplete (#7965)** (ddffad1)
- **feat(runtime): universal ingress policy layer (default Loop) (#7997)** (8e50394)
- **feat(channels/discord): render outbound rich embeds from [EMBED:{…}] markers (#7833)** (84fe2bd)

### Fixes
- **fix(gateway): require auth on A2A task invocation, leave discovery cards public (#8274)** (b12f5a6)
- **fix(config): warn when a2a.exposed_skills resolves no skills (#8283)** (df57122)
- **fix(config): make the yolo preset fully unrestricted (#8281)** (6359f8f)
- **fix(cli): make `models set` persist the model in config instead of probing providers (#7094)** (b261fc1)
- **fix(skills): stop flagging remote markdown documentation links in skill audit (#8190)** (fc87806)
- **fix(log): make same-timestamp pagination deterministic via byte-offset cursor (#7921)** (bd8cd56)
- **fix(runtime): gate delegate sub-tools with parent's SecurityPolicy (#8284)** (5851c58)
- **fix(zerocode): change browse enter/exit to alt+shift+up/down (#8166)** (8133ead)
- **fix(providers): expose replay_assistant_reasoning and fallback tool_c… (#8232)** (33655c2)
- **fix(channel): `refreshed_new_session_system_prompt` load bundled_skill (#8203)** (accc257)
- **fix(doctor): pass Config to provider_validation_error for custom providers (#8084)** (83e6f17)
- **fix(notion): propagate header parse errors instead of unwrapping (#8147)** (ea3f0bf)
- **fix(providers): update Kimi Code endpoint to api.kimi.com/coding/v1 (#8163)** (90a791e)
- **fix(memory): keep sqlite sessions out of hygiene archives (#8318)** (39d33c5)
- **fix(runtime): allow auto-approved tools on channels at non-Full autonomy (#7959)** (24201bc)
- **fix(browser): repair WebDriver snapshot returns and CSS selector escaping (#7908)** (0cf14e4)
- **fix(web_fetch): let allowed_private_hosts = ["*"] cover DNS-resolved private hosts (#7412)** (b5c6cf8)
- **fix(runtime): cascade config alias renames safely (#8109)** (c367360)
- **fix(zerocode): registry-driven help, themed code-fence highlighting, and config-pane nav (#8282)** (157dbd0)
- **fix(observability): propagate channel, agent_alias and turn_id to agent lifecycle observer events (#7771)** (d91e08e)
- **fix(providers): enable vision support for NVIDIA NIM provider (#8100)** (31345d6)
- **fix(config): reject creating the reserved `default` agent across all operator surfaces (#8098)** (82b9fd0)
- **fix(zerocode): pause the queue when a turn is cancelled (#8214)** (4158272)
- **fix(channels): preserve re-loadable media refs in cached history (#8153)** (927a8b0)
- **fix(skills): correct "ClawhHub" typo in skill installer messages (#8262)** (1976c62)
- **fix(runtime): bound repeated shell approval loops (#7901)** (6ce0473)
- **fix(providers): coalesce stripped compatible history roles (#7931)** (82b03a7)
- **fix(zerocode): distinguish selected field from editable input (#7995)** (82f53ee)
- **fix(gateway): cascade provider and channel alias deletes (#8074)** (18f6bdb)
- **fix(cli): update non-default channel guidance (#7955)** (11bfc4f)
- **fix(runtime): persist agent turn costs (#7957)** (90a9e07)
- **fix(tools): add content_search internal fallback (#8060)** (26185ed)
- **fix(scripts): use act's GoGitActionCache to resolve pinned non-tip action SHAs (#8223)** (8465ae9)
- **fix(loop): gate path-listing tool results from vision routing (#7345)** (381a3e5)
- **fix(receipts): wire HMAC tool receipts through the agent turn paths (ACP, gateway WS, CLI) (#8009)** (a736154)
- **fix(zerocode): detect daemon version mismatches (#8192)** (8a72f16)
- **fix(config): gate Android shell import on non-Windows (#8189)** (6aba8bd)
- **fix(tests): make screenshot expectations platform-aware (#8183)** (8fe3765)
- **fix(tools): normalize Windows workspace-prefixed paths (#8114)** (23f86b4)
- **fix(docker): keep Node base policy in container TOML (#8112)** (4b066e2)
- **fix(ci): stop Kilo labeler matching shared provider files (#8106)** (ca96a5b)
- **fix(tests): make process fixtures portable on Windows (#7956)** (aecd955)
- **fix(telegram): redact bot token via global leak detector (#8127)** (3cca4ca)
- **fix(runtime): refresh system prompt on tool dispatcher swap (#8126)** (6289ecd)
- **fix(web): surface config drift conflict on the enable/disable toggle (#8042)** (d7edf20)
- **fix(vision): scope the no-vision capability error to the latest user image (#8180)** (451b15e)
- **fix(agent): self-contained context-compression summary provider (#7973)** (87c186e)
- **fix(daemon): drain gateway before RPC reload (#8104)** (991a5b4)
- **fix(zerocode): initialize MCP for Chat TUI sessions (#8199)** (d65404c)
- **fix(tools/image): expose stable attachment paths in image-generation output (#7985)** (ffbf410)
- **fix(update): repair Windows self-update and harden the update pipeline (#7853)** (ef18ac6)
- **fix(zerocode): surface active config directory in Config header (#7999)** (c6c4a23)
- **fix(cron): claim/release in-flight lock to prevent duplicate launches (#8107)** (f218b94)
- **fix(model_switch): resolve list_models from live models.dev catalog, hardcoded list as offline fallback (#8088) (#8097)** (80d159d)
- **fix(channels): suppress bound channels when their owning agent is disabled (#8013) (#8051)** (dcaf38d)
- **fix(runtime): present native/MCP tools to reasoning models in the system prompt (#7756) (#8053)** (65a0f08)
- **fix(gateway): surface option-backed tunnel providers in the picker (#8026)** (2b1ec61)
- **fix(mcp): scope MCP tools per-agent and enforce the denylist (#8120)** (9efc7c0)
- **fix(whatsapp_storage): store app-state mutation MACs raw, not JSON-wrapped (#7912)** (1a3fdb9)
- **fix(zerocode): skip queue-paused hint when backlog is empty (#7857)** (d2ed46f)
- **fix(read_skill): load plugin-bundled and bundled skills (#7245)** (9db2c40)
- **fix(daemon): handle file-descriptor exhaustion (EMFILE) in IPC accept loop (#7983)** (a860041)
- **fix(skills): guard truncate_output against UTF-8 char boundaries (#7962)** (b31d164)
- **fix(self-test): authenticate websocket handshake probe (#7732)** (5152cd7)
- **fix(tools/git_operations): add recovery hint and path context to non-repository error (#7835)** (111a966)
- **fix(install): detect Intel vs Apple Silicon for prebuilt target triple (#8096)** (ea207f8)
- **fix(runtime): base missing-skill suggestions on effective tool set in process_message path (#7819)** (afba0a7)
- **fix(zerocode): fill approval overlay background (#7823)** (6a1dd4d)
- **fix(docker): drop stale aardvark-sys build.rs COPY (#8092)** (b10d222)
- **fix(memory): decouple embedding key from chat provider; survive embed failures (#7942)** (a5d5803)
- **fix(zeroclaw-runtime): drop unused unconditional rumqttc dependency (#8077)** (56b1bca)
- **fix(gateway): persist agent rename before moving owned state (#7940)** (b54bec7)
- **fix(channels): preserve tool-result content when proactively trimming channel history (#8050)** (9e7dee6)
- **fix(runtime): stop duplicating streamed narration before native tool calls (#8014)** (1176f9b)
- **fix(cost): make budget config reloadable instead of frozen at boot (#8004)** (74711fb)
- **fix(docker): correct Node 24 digest pins (#7932)** (5a248ee)
- **fix(providers): strip assistant reasoning on outbound replay for Groq (#7616)** (24c8fba)
- **fix(ci): pass provider-dispatch gate and --all-features build on master (#8019)** (fb3df9a)
- **fix(tools): resolve external coding tool working_directory from project root (#7967)** (a0f804c)
- **fix(channels/voice): stop caching config-derived static_voice_peers on channel handle (#7982)** (e5762cf)

### Tests
- **test(log): cover legacy log action category mapping (#8258)** (b6be37a)
- **test(log): cover observability policy parsing edge cases (#8254)** (8049cb1)
- **test(eval): cover suite report aggregation and rendering (#8246)** (f1759aa)
- **test(eval): cover evaluate_expects grading checks (#8244)** (b214b55)
- **test(model_switch): cover offline catalog fallback in handle_list_models (#8230)** (bdc5cee)
- **test(memory): cover jaccard dedup and conflict filtering edge cases (#8266)** (f8c5e7e)
- **test(runtime): cover whole-turn trim tool_call_id envelopes (#8117)** (ed4ffb1)
- **test(runtime): pin hook panic recovery + cancellation propagation (#7688) (#8041)** (338fa6e)
- **test(runtime/tool_execution): add regression for poisoned activated-tool lock recovery (#7845)** (8ffd39f)
- **test(runtime): cover blank-input turn rejection (#7859)** (9f1456d)
- **test(memory): cover storage-reader timestamp and ordering edge cases (#7694) (#7916)** (91c4a0c)
- **test(runtime): pin system prompt in cache-hit test to kill date flake (#8036)** (13a8a85)

### Docs
- **docs(i18n): pin v0.8.2 translations + self-init po submodule in mdbook sync (#8332)** (daf3e73)
- **docs(mdbook): avoid stale placeholder warning translations (#8194)** (e75e1ea)
- **docs(developing): define external integration boundary (#8184)** (d14f6d1)
- **docs(maintainers): standardize label spelling (#8111)** (513a9bb)
- **docs(channels): remove stale guild override wording (#8108)** (c4765b5)
- **docs(rustdoc): quiet warning links (#8191)** (8df6b8a)
- **docs(architecture): align extension point overview (#7880)** (57b7a87)
- **docs(plugin): align plugin docs with WIT target (#8061)** (a4135cd)
- **docs(windows-setup): fix dead quick-start link breaking docs build (#8085)** (185fcde)
- **docs(windows-setup): rewrite + fix setup.bat known issues (#6102)** (c6cf756)

### Chore
- **ci(release): raise binary size hard limit to 64MB (#8342)** (56b5a1f)
- **chore(release): bump version to v0.8.2 and add changelog (#8234)** (5aba835)
- **ci(deny): wildcards deny, advisory tracking, document multi-version debt (#8188)** (bdbc7d3)
- **ci(docs): run link gate in PR checks (#8197)** (5754473)
- **refactor(history): rip out history pruning/compression, redo trim as one whole-turn function with a visible RPC event (#8196)** (a8da397)
- **ci(docker): build base Dockerfiles from source on container changes (#8093)** (0a48eb7)
- **refactor(turn): bundle per-agent ToolLoop fields into ResolvedAgentExecution (#8156)** (717845f)
- **ci(actions): add advisory cross-platform clippy workflow (#7885)** (e86be5b)
- **chore(hardware): gate aardvark-sys behind the hardware feature (#8028)** (c338e09)
- **chore(deps): unyank bitcoin crates in Cargo.lock (#7992)** (215be2e)

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