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

_382+ commits._

### Features
- **feat(zerocode): choose saved Code session on entry (#8922)** (379e460)
- **feat(quickstart): run CLI subscription auth inline (#8981)** (7b92e2a)
- **feat(channels): operator-bind identities without the /bind code round-trip (#8707)** (6c2be72)
- **feat(quickstart): add subscription auth modes (#8980)** (72ab133)
- **feat(runtime): meter the max-iteration graceful summary via run_model_query (S21 P2) (#8821)** (209c841)
- **feat(sop): web visual authoring (experimental) with channel fan-in and selectable agent, plus the git_forge unified forge tool (#8590)** (f1f0460)
- **feat(cron): expose per-cron-job uses_memory flag in CLI, tools, and gateway API (#8676)** (9c05422)
- **feat(gateway): add default HTTP security response headers (#8829)** (5d0048d)
- **feat(zerocode): TodoWrite tracker for ZeroCode (RPC + ACP + durable persistence) (#8639)** (2e0f707)
- **feat(whatsapp): add native location pin support to both backends (#8427)** (51d0420)
- **feat(memory): persist embedding identity and auto-migrate vectors on change (#8623)** (a50ce89)
- **feat(commands): add built-in command catalogue (#8683)** (882dd87)
- **feat(runtime): add goal task storage foundation (#8685)** (8f19536)
- **feat(cost): add task-attributed usage ledger APIs (#8686)** (695eae2)
- **feat(providers): wire provider_timeout_secs and extra_headers through responses path (#7690) (#8229)** (bb01658)
- **feat(zerocode): add cron run history and trigger (#7905)** (ad9e2e3)
- **feat(skills): make skills install/list/remove bundle-aware (#8335)** (aca8e95)
- **feat(runtime): add ResolvedModelAccess::run_model_query metered provider seam (S21 P1) (#8806)** (24e92e9)
- **feat(runtime): sample process RAM/CPU on macOS, Windows, FreeBSD via sysinfo (#8802)** (234cc8f)
- **feat(skills): add runtime-profile prompt_injection_mode override (#8235)** (2baf4c4)
- **feat(runtime): unified memory-context injection keyed on TurnOrigin ingress provenance (#8619)** (9e731b1)
- **feat(tools): add Bocha AI web search provider (#8737)** (a3ff1af)
- **feat(delegate): give independent delegates the target agent MCP and skill tools (#8761)** (433e6a2)
- **feat(zerocode): add ctrl-w word delete (#8774)** (dd6edc4)
- **feat(doctor): warn on OpenAI Codex profile/slot wiring mismatch (#8030)** (b639a2f)
- **feat(line): loading indicator, icon/nickname switch, and bind reply feedback (#7768)** (3a6d689)
- **feat(cost): fill unpriced models from live gateway pricing (#8233)** (2a8f042)
- **feat(runtime): add model context window ctx bar to zerocode tui, gateway agent chat, and command line interactive mode. (#7946)** (087607a)
- **feat(delegate): await background sessions (#8525)** (10ca1aa)
- **feat(channels): add Gitea/Forgejo provider for the Git forge channel (#8611)** (6405f33)
- **feat(channels): add Git forge channel (GitHub provider) with SOP ingress (#8609)** (a4ce8f0)
- **feat(config): emit x-required-by-transport metadata for mcp servers (#8349)** (fead96c)
- **feat(web): visual editor for typed slash-command options in skill bundles (#8620)** (414a690)
- **feat(desktop): self-contained installer — bundle the kernel as a Tauri sidecar (#8708)** (585b394)
- **feat(skills): add opt-in bounded SKILL.md reflection for skill creation (#8261)** (824e9bb)
- **feat(skills): integrate arch-review artifact into PR review session (#6717)** (26a410c)
- **feat(skills): surface security-audit-skipped skills in `skills list` (#8699)** (ba8dff2)
- **feat(skills): document work queue query in issue triage skill (#6718)** (3ec71f1)
- **feat(observability): runtime OTel content policy for LLM and tool I/O (#8567)** (e43604a)
- **feat(desktop): reintroduce zeroclaw-desktop as a self-contained, Quickstart-first companion (#8565)** (665308d)
- **feat(skills): add pr-architecture-check advisory review skill (#6716)** (f753dc4)
- **feat(sop): add procedural memory workshop (#8509)** (710a2b5)

### Fixes
- **fix(ci): escape release verification Markdown (#9031)** (abf5b48)
- **fix(release): restore lean prebuilt feature set (#9051)** (d8f0720)
- **fix(security): scan link/image destinations for deterministic credential patterns (#8906)** (0277f67)
- **fix(channels): localize channel runtime replies (#8769)** (42fa197)
- **fix(runtime): thread agent_alias into agent_turn's ToolLoop (#8921)** (0453c09)
- **fix(log): remove unused write_lock field from WriterState and WorkerState (#8941)** (bacda86)
- **fix(runtime): enforce context budget against provider-reported tokens (#8840)** (169c988)
- **fix(config): widen config-set alias auto-materialization past providers.* (#8833)** (466c282)
- **fix(channels/orchestrator): use resolved agent config for strict_tool_parsing and parallel_tools (#7836)** (963058a)
- **fix(zerocode): use runtime profile max_context_tokens for context meter (#8872)** (b910632)
- **fix(cli): UTF-8-safe stdin cap in exit prompt + audit trail (#7828) (#8873)** (5d8c7bd)
- **fix(runtime): gate agent stdout output on interactive flag (#8760) (#8912)** (fb3f4da)
- **fix(gateway): use constant_time_eq for nodes.auth_token comparison (#8824)** (0194b60)
- **fix(channels): gate /model --agent behind per-sender authorization (#8044) (#8690)** (f8c61c1)
- **fix(cron): expose wechat, signal, email in cron delivery schema (#8881)** (ab7b116)
- **fix(zerocode): dismiss transcript highlight on blank side clicks (#8652) (#8904)** (58bce7f)
- **fix(runtime): classify tool_filter_groups targets by MCP origin (#6699) (#8819)** (f68a20e)
- **fix(zerocode): strip markdown fences from code block copy text (#8777)** (ab3a602)
- **fix(providers): resolve alias credential for model-catalog so native /models is used (#8861)** (4d47ffb)
- **fix(web): add Skills nav entry to left sidebar (#8795)** (73dcc35)
- **fix(log): shut down previous writer worker on re-init (#8869)** (908d595)
- **fix(memory): make SqliteMemory: Clone valid by sharing one embedder lock (#8868)** (4d85bd7)
- **perf(log): move JSONL fsync off the async hot path (#8439)** (a124863)
- **fix(security): preserve generated file references in leak scans (#8723)** (629c082)
- **fix(policy): protect runtime state files in config dir from agent overwrites (#8660)** (a1d7d1f)
- **fix(matrix): reject SSRF in marker URL host guard (parser-level IP block) (#8657)** (7752709)
- **fix(text_browser): add allowed_private_hosts opt-in to close SSRF gap (#8635)** (9d69075)
- **fix(tools): allow http_request secrets to resolve from env (#8649)** (6a7d709)
- **fix(agent): carry approval attribution on the decision instead of a channel-global side channel (#8308)** (6747cb8)
- **fix(audit): prevent signing-key leak via VarError formatting (#8591)** (72bc9e6)
- **fix(tests): make delivery_failure_note assertions locale-independent (#8569)** (dc888b9)
- **fix(lark): unify channel routing identity for Feishu endpoints (#8853)** (31b6dff)
- **fix(runtime): persist model_switch across turn paths (#6719)** (e147e49)
- **fix(zerocode): apply live model switches to provider (#8717)** (fb6b87c)
- **fix(config): auto-materialize new map aliases in config patch, matching HTTP PATCH (#8842)** (bf92579)
- **fix(runtime): Arc-share tool schemas to stop per-iteration clone churn (#8817)** (a3961d3)
- **fix(runtime): hot-reload log persistence config (#8816)** (e9e0aac)
- **fix(i18n): sync Fluent locale catalogues (#8790)** (1bd152c)
- **fix(tools): apply excluded_tools denylist to skill-registered tools (#8788)** (0cac652)
- **fix(zerocode): stop intermittent ask_user failures under ACP elicitation (#8773)** (3046cf4)
- **fix(zerocode): improve quickstart agent setup flow (#8716)** (f050d10)
- **fix(channels/wechat): harden local attachment path resolution against traversal (#8628)** (565abcd)
- **fix(zerocode): improve quickstart provider reuse flow (#8522)** (8f1c8b4)
- **fix(channels): restore agent precheck controls (#8319)** (096c64f)
- **fix(runtime): surface remediation when system-prompt floor exceeds context budget (#7440)** (7736dbc)
- **fix(install): exclude Tauri apps from --full's app sweep (#8786)** (6c50e4a)
- **fix(ci): make local gates workspace-aware (#8776)** (40a2827)
- **fix(skills): align the prompt callable-tool set with the registry (#8805)** (12e05ad)
- **fix(config): wire System-role attribution and pin malformed [plugins.entries] drop (#8662)** (c374e31)
- **fix(runtime): enforce leading user-turn invariant before provider dispatch (#8696)** (99a55e3)
- **fix(mcp): list bundled MCP tools on dashboard in deferred mode (#8703)** (e7b9d96)
- **fix(zerocode): make Code help and keybindings reachable and accurate (#8705)** (8485b5d)
- **fix(sop): reject sop_advance on runs parked at a gate (#8747)** (a5b66fe)
- **fix(deps): bump crossbeam-epoch to 0.9.20 (RUSTSEC-2026-0204) (#8783)** (da09bbc)
- **fix(gateway): only print dashboard URL when web_dist_dir is available (#7529)** (1f0f920)
- **fix(sop): execute deterministic capability steps via a registry and fail closed on driverless steps (#8724)** (a297be2)
- **fix(web): point favicon and sidebar logos to existing logo.png (#8487)** (dc8b9da)
- **fix(web): gate MCP server command/url required-ness on transport (#8032)** (32d420f)
- **fix(web): show created storages across all badge-filtered config surfaces (#8345)** (939910d)
- **fix(gateway): reject empty bearer token in require_auth (#8727)** (1bb5553)
- **fix(gateway): exclude env-overridden secrets from reload drift (#8704)** (4a53a14)
- **fix(audit): remove rag-pdf feature to clear RUSTSEC-2026-0192 (ttf-parser) (#8547)** (51558af)
- **fix(zerocode): let active sessions switch agents (#8477)** (ee97859)
- **fix(channels): repair master build under all-features (#8702)** (10d1f6f)
- **fix(plugins): feature-graph, install-time config seeding, and degraded-section visibility (#8641)** (d948071)
- **fix(provider): guard SSE parsers against EOF-as-success truncation (#8663)** (a9a2646)

### Tests
- **test(eval): ensure invalid regex checks continue (#8972)** (6d0ebb9)
- **test(commands): cover slash token normalization (#8971)** (5ef7548)
- **test(log): cover llm request UTF-8 truncation (#8884)** (9f2daaf)
- **test(zerocode): guard that deferred tool_search resolves granted MCP tools (#8775)** (9d6e719)
- **test(gateway): make persist-failure & archive-failure injection root-safe (ENOTDIR, not DAC) (#8750)** (d04467f)
- **test(agent): add the agent-policy parity harness scaffold (#8659)** (b78c627)

### Docs
- **docs(rustdoc): stop linking private helpers (#9004)** (de325eb)
- **docs(maintainers): fix dashboard workflow link (#9003)** (0eb3328)
- **docs(maintainers): clarify review validation evidence (#8924)** (ae26690)
- **docs(architecture): add channel runtime lifecycle guide (#8669)** (ddec451)
- **docs(channels): add git forge setup guides and the config-set mdbook directive (#8799)** (c2c7444)
- **docs(pr-template): add human-run Testing section with A/B recipe (#8859)** (600f735)
- **docs(architecture): add tool execution lifecycle guide (#8917)** (fa3cc53)
- **docs(labels): define held label-family policy (#8849)** (0c5fe3a)
- **docs(architecture): record goal-mode control-plane decision (#8682)** (79cac02)
- **docs(deny): add tracking links to wasmtime and rustls-webpki advisory ignores (#8059) (#8577)** (cfe90b0)
- **docs(labels): document refactor type label (#8846)** (4c86b7f)
- **docs(reference): source-generated feature matrix with full OpenClaw/Hermes parity (#8697)** (750f809)
- **docs(channels): add Git channel + SOP fan-in pages (#8618)** (06969f8)
- **docs(agents): sync model_provider trait rename in extension points (#8728)** (58f8509)
- **docs(architecture): restore ADR decision records (#8694)** (abe98ba)
- **docs(labels): define tracker marker policy (#8715)** (2782c68)
- **docs(plugins): add plugin authoring guide series, correct stale plugin claims in docs and source comments (#8621)** (caed62f)
- **docs(labels): document provider router and security labels (#8668)** (078dc36)

### Chore
- **ci(release): raise build matrix timeout to 90 minutes (#9098)** (24476b7)
- **chore(release): cut v0.8.3 — changelog, version bump, locale sync (#9081)** (08baac5)
- **chore(release): add CHANGELOG-next.md for v0.8.3 (#9054)** (1f8ab7b)
- **refactor(log): remove unused tool IO empty marker (#8970)** (82fe851)
- **ci(project): add report-only issue dashboard planner (#8914)** (2c2edec)
- **refactor(runtime): own MCP prompt-section composition at the ScopedAssembled boundary (#8812)** (2fe6bbf)
- **refactor(skills): route pre-existing install/audit errors through Fluent (#8957)** (ae30776)
- **chore(ci): document local gate vs required-CI divergence (#8843) (#8876)** (3860739)
- **ci(actions): summarize benchmark compile diagnostics (#8614)** (09fb2a6)
- **chore(msrv): bump workspace MSRV to 1.96.1 and align CI, Docker, docs (#8801)** (27543dc)
- **refactor(runtime): route Agent::from_config tool assembly through the scoped seam (#8711)** (5028209)
- **chore(runtime/shell): drop phantom audit citation from SSRF guard comment (#8755)** (3fab919)
- **ci(security): add CodeQL analysis and scheduled Trivy image scan (#8729)** (844ee07)
- **refactor(runtime): route the independent-delegate tool registry through the scoped seam (#8744)** (54a15a6)
- **ci(release): ship self-contained desktop installers on all three platforms (#8709)** (e78a949)
- **ci(desktop): compile + lint zeroclaw-desktop on macOS/Linux/Windows (#8706)** (1c5ed41)
- **refactor(runtime): unify process_message built-in tool filter through the scoped seam (#8701)** (a44af5d)
- **refactor(runtime): route loop_::run tool assembly through the ScopedToolRegistry seam (#8700)** (6734b22)

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