Peter Steinberger
a12e0f26ee
fix(plugins): serialize lifecycle mutations and preserve setup-required installs ( #112763 )
...
* fix(plugins): harden concurrent lifecycle mutations
* fix(update): preserve post-core restart snapshot
* fix(update): retain authoritative plugin records on resume
* fix(update): reconcile plugin records after handoff
2026-07-22 23:25:48 -04:00
Gio Della-Libera
9636f2aa2d
Add CLAW.md manifest support ( #111391 )
...
* Add CLAW.md manifest support
* test(claws): cover CLAW.md manifests
* docs(claws): document CLAW.md packages
* fix(claws): harden claw markdown parsing
* fix(claws): bound claw document reads
2026-07-22 18:37:08 -07:00
Gio Della-Libera
7d159fdc77
Apply consented grouped Claw updates ( #102982 )
...
* Apply consented grouped Claw updates
* test(claws): cover update application
* docs(claws): document consented updates
* fix(claws): preserve uncertain update state
* fix(claws): preserve inherited lifecycle guards
* fix(claws): derive update package contracts
* fix(claws): type update package lookup
* test(claws): complete update capability fixtures
* refactor(claws): share cron payload builder for updates
* refactor(claws): extract update plan summary
* fix(claws): activate cron after update dependencies
* fix(claws): preserve state after uncertain cron update
* fix(claws): persist partial update provenance
* fix(claws): preserve update ownership metadata
* test(claws): track update apply temp dirs
* test(claws): align update cron mock result
* fix(claws): update apply writes agent entries
---------
Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com >
2026-07-22 17:42:42 -07:00
Jesse Merhi
4a2a600809
feat(channels): add channel-owned setup contracts ( #112176 )
...
* feat(channels): add channel-owned setup contracts
* test(channels): align legacy setup fixtures
* chore(channels): regenerate config and SDK baselines after rebase
* fix(update): run fresh doctor after current-process core changes
* fix(channels): align add pre-scan with execution precedence
* style(cli): format channels-cli test additions
* fix(channels): restore option-before-positional channel resolution via metadata arity scan
* fix(channels): keep help flags out of metadata arity escalation
* test(update): mock fresh post-update doctor in current-process suites
* style: format review fixes and correct entrypoint mock type
* fix(channels): register only modern contract options for dual-publishing plugins
* test(update): align downgrade suites with fresh-doctor child invocation
* docs(channels): record empty-contract and input-forwarding invariants
* fix(line): keep the shipped --token switch as a channel access token alias
* fix(signal): stop treating exact cross-family loopback endpoints as bind-aligned
* chore(config): regenerate docs config baselines after second rebase
* style: format rebased channels add tests
* fix(channels): enforce field-key and flag-name agreement in setup contracts
* fix(signal): detect container endpoints for bare --http-url setup
* fix(signal): ignore unconfigured accounts in transport collision checks
* fix(channels): validate negated setup flags in contract and normalizer
* fix(signal): preserve existing transport kind when setup detection is unreachable
* style(signal): use direct boolean check in collision guard
* style(signal): type test config literals
* docs(update): record two-read design of fresh-doctor validation gate
* fix(channels): satisfy post-rebase architecture gates
* docs: refresh channel setup map
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-22 19:57:42 -04:00
Peter Steinberger
f5562748de
fix(logging): give non-default profiles their own gateway log file ( #112777 )
...
* fix(logging): give non-default profiles their own gateway log file
* chore: defer profile log release note
2026-07-22 19:08:41 -04:00
Gio Della-Libera
f004d76a0e
Plan grouped Claw agent updates ( #102959 )
...
* Plan grouped Claw agent updates
* test(claws): cover update planning
* docs(claws): document update preview
* fix(claws): bind update capability effects
* fix(claws): redact update capability effects
* fix(claws): bind capability previews to exact changes
---------
Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com >
2026-07-22 13:44:09 -07:00
Gio Della-Libera
31ff00fe82
Add experimental Claw lifecycle diagnostics ( #102427 )
...
* Add experimental Claw lifecycle diagnostics
* test(claws): cover lifecycle diagnostics
* docs(claws): document doctor diagnostics
* test(claws): derive future state schema version
* test(claws): clean doctor restack fixture
* test(claws): align doctor drift fixture with agent entries
---------
Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com >
2026-07-22 11:55:47 -07:00
Gio Della-Libera
b56006babf
Manage Claw MCP server ownership ( #102406 )
...
* Manage Claw MCP server ownership
* test(claws): cover MCP resource lifecycle
* docs(claws): document MCP resources
* fix(claws): preserve lifecycle status contracts
* fix(claws): reconcile missing MCP removals
* fix(claws): recheck restored MCP before releasing provenance
* fix(claws): protect restored MCP identity
* refactor(claws): isolate MCP removal lifecycle
* fix(claws): export lifecycle status record
* style(claws): remove obsolete lifecycle lint exemption
* fix(claws): read MCP status from agent entries
* test(claws): clean MCP restack fixtures
* fix(claws): repair MCP state schema restack
* test(claws): remove stale MCP status import
---------
Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com >
2026-07-22 08:37:44 -07:00
Gio Della-Libera
96e3051838
Manage Claw cron jobs through the gateway ( #102383 )
...
* Manage Claw cron jobs through the gateway
* test(claws): cover scheduled work lifecycle
* docs(claws): document scheduled work
* fix(claws): preserve modified cron jobs
* fix(claws): internalize cron gateway payloads
* fix(claws): make cron removal convergent
* style(claws): satisfy intermediate lifecycle lint
* refactor(claws): extract lifecycle state contracts
* test(claws): clean cron restack fixtures
---------
Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com >
2026-07-22 08:04:54 -07:00
Peter Steinberger
1a121da22c
fix(onboarding): honor classic gateway options ( #112396 )
...
* fix(onboarding): honor classic gateway options
* test(wizard): type gateway setup mock
* docs(onboarding): document quickstart gateway flags
* chore(release): defer changelog entry
2026-07-22 06:47:57 -07:00
Gio Della-Libera
6134fdfdcd
Export installed agents as grouped Claw packages ( #102306 )
...
* Export installed agents as grouped Claw packages
* test(claws): cover exact agent export
* docs(claws): document agent export
* fix(claws): use current bounded file reader
---------
Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com >
2026-07-22 06:40:29 -07:00
Peter Steinberger
df3ff35277
refactor(state): move device auth tokens to SQLite ( #112663 )
...
* refactor(state): store device auth tokens in sqlite
* fix(state): keep device auth migration types acyclic
* fix(state): keep migration detection type private
2026-07-22 06:13:03 -07:00
Peter Steinberger
0c99a4e362
feat(ui): manage DM pairing requests in Channels ( #112401 )
...
* feat(ui): manage DM pairing requests
* fix(ui): clear pairing data across auth changes
* test(ui): tighten pairing page fixture type
* fix(gateway): complete pairing protocol contracts
* fix(ui): guard pairing mutations across epochs
* fix(ui): restore chat teardown gates
* fix(ui): isolate channel auth lifecycles
* fix(ui): remove stale chat view export
2026-07-22 04:54:20 -07:00
Patrick Erichsen
a691eb7372
Revert "feat(skills): support skills-sh install references ( #112517 )" ( #112531 )
...
This reverts commit 7c353b7436 .
2026-07-21 22:37:50 -07:00
Patrick Erichsen
7c353b7436
feat(skills): support skills-sh install references ( #112517 )
2026-07-21 22:33:22 -07:00
Josh Lehman
4481c623cd
fix(onboard): survive inference owner drift and prefer subscription logins in guided setup ( #112378 )
...
* fix(onboard): survive inference owner drift and verify credentials route-aware
Guided onboarding crashed ("Could not start the CLI") on the openai-api-key
candidate when OPENAI_API_KEY was set and a Codex CLI login existed:
- owner revalidation resolved provider auth without the route model's
id/api, so the transport gate never applied and profile-first discovery
picked the Codex-imported ChatGPT OAuth profile instead of the env key
the probe ran with — a deterministic fingerprint mismatch
- that mismatch escaped the activation persistence path as a plain throw,
crashing the wizard ladder instead of moving to the next candidate
Owner re-resolution now carries resolved model transport facts (fail closed
when the model cannot be resolved), and all setup revalidation sites route
through one helper whose drift error activation maps to
{ ok: false, status: "auth" }.
* feat(onboard): prefer logged-in subscription CLIs over env API keys in setup ladder
* fix(onboard): promote codex only on verifiable ChatGPT OAuth tokens
* fix(onboard): surface detected AI candidates in the top auth-choice tier
* fix(onboard): name detected candidates and the current model clearly
* test(setup): mock model resolution in the bound-session lock test
* fix(system-agent): carry verified model transport facts
2026-07-21 22:03:26 -07:00
Peter Steinberger
edecdbd05e
refactor(config): config-surface reduction tranche 3 — product consolidations (review request) ( #111527 )
...
* refactor(config): consolidate media model lists
* refactor(config): unify memory configuration
* refactor(config): consolidate TTS ownership
* refactor(config): move typing policy to agents
* refactor(config): retire product-level config surfaces
* refactor(config): share scoped tool policy type
* chore(config): refresh generated baselines
* fix(config): honor agent typing overrides
* fix(config): migrate sibling config consumers
* refactor(infra): keep base64url decoder private
* fix(config): strip invalid legacy TTS values
* chore(config): refresh rebased baseline hash
* fix(doctor): route legacy messages.tts.realtime voice to talk during tts move
* refactor(config): polish final layout names
* refactor(config): freeze retired tuning defaults
* feat(config): add fast mode default symmetry
* refactor(config): key agent entries by id
* docs(config): update final layout reference
* test(config): cover final layout migrations
* chore(config): refresh final layout baselines
* fix(config): align final layout runtime readers
* fix(config): align remaining readers
* fix(config): stabilize final layout migrations
* fix(config): finalize config projection proof
* fix(config): address final layout review
* docs(release): preserve historical config names
* fix(config): complete keyed agent migration
* fix(config): close final migration gaps
* fix(config): finish full-branch review
* fix(config): complete runtime secret detection
* fix(config): close final review findings
* fix(config): finish canonical docs and heartbeat migration
* fix(config): integrate latest main after rebase
* refactor(env): isolate test-only controls
* refactor(env): isolate build and development controls
* refactor(env): collapse process identity indirection
* refactor(env): remove duplicate config and temp aliases
* docs(env): define the operator-facing allowlist
* ci(env): ratchet production variable count
* fix(env): remove stale provider helper import
* fix(env): make ratchet sorting explicit
* test(env): keep test seam in dead-code audit
* test(env): cover ratchet growth and boundary; document surface budgets
* docs(config): document tier-eval consolidations
* docs(config): clarify speech preference ownership
* test(memory): align retired tuning fixtures
* refactor(memory): freeze engine heuristics
* refactor(config): apply tier-eval tranche
* refactor(tts): move persona shaping to providers
* refactor(compaction): move prompt policy to providers
* test(config): align hookified prompt fixtures
* chore(deadcode): classify test-only exports
* chore(github): remove unused spawn helper
* chore(deadcode): classify queue diagnostics
* chore(deadcode): remove unused lane snapshot export
* chore(plugin-sdk): ratchet consolidated surface
* fix(config): integrate latest main after rebase
2026-07-21 20:28:43 -07:00
Gio Della-Libera
137dabc929
Add plan-first Claw status and remove ( #102296 )
...
* Add plan-first Claw status and remove
* test(claws): cover status and removal
* docs(claws): document status and removal
* fix(claws): report incomplete root state
* test(claws): complete adoption plan fixtures
* fix(claws): revalidate package removal ownership
* style(plugins): format lifecycle uninstall
* fix(claws): align agent removal preconditions
---------
Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com >
2026-07-21 19:53:08 -07:00
Gio Della-Libera
ba467fbd3e
Install ClawHub packages for new Claw agents ( #102228 )
...
* Install ClawHub packages for new Claw agents
* test(claws): cover skill and plugin installation
* docs(claws): document package artifacts
* fix(claws): bind package trust preflight
* fix(claws): bind package capability consent
* fix(claws): satisfy package type guards
* test(claws): update package installer fixtures
* test(claws): complete package plan fixtures
* test(claws): model complete ClawHub results
* fix(claws): serialize plugin ownership changes
* fix(claws): cover legacy plugin lifecycle updates
* fix(claws): preserve legacy ClawHub update selectors
* test(claws): type lifecycle lease mock
* refactor(claws): isolate plugin update lifecycle
* fix(claws): declare managed installer coordination
* test(claws): preserve partial collision result
* test(claws): clean installer temp dirs
---------
Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com >
2026-07-21 18:55:10 -07:00
Gio Della-Libera
ebe2420482
Create Claw-managed workspace files ( #101973 )
...
* Create Claw-managed workspace files
* test(claws): cover managed workspace files
* docs(claws): document workspace files
* docs(claws): correct workspace manifest example
* fix(claws): preserve failed workspace ownership boundaries
* test(claws): align symlink escape diagnostic
* test(claws): canonicalize workspace alias fixture
* test(claws): clean workspace temp dirs
---------
Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com >
2026-07-21 17:36:33 -07:00
Gio Della-Libera
88a7306308
Create Claw agent and root install record ( #101755 )
...
* Create Claw agent and root install record
* test(claws): cover consented agent creation
* docs(claws): document consented agent creation
* fix(claws): normalize agent collisions at commit
* test(claws): expect partial normalized collision
* test(claws): isolate normalized collision state
* test(claws): reject normalized agent collisions
* test(claws): align capability output expectation
* fix(claws): align add plan call with current schema
---------
Co-authored-by: Patrick Erichsen <patrick.a.erichsen@gmail.com >
2026-07-21 17:24:24 -07:00
Peter Steinberger
c84921634d
fix(macos): require explicit consent for privacy-sensitive access ( #112321 )
...
* fix(macos): avoid passive Automation prompts
* fix(macos): keep Voice Wake recognition on device
* fix(macos): require consent for activity presence
* chore(apps): refresh native i18n inventory
* fix(macos): preserve presence clears across gateway versions
* fix(macos): prioritize activity privacy opt-out
* chore(apps): refresh native i18n inventory
* fix(macos): scrub legacy presence activity
* fix(macos): migrate permission status caller
* fix(macos): preserve unknown permission state
* fix(macos): refresh privacy change artifacts
* refactor(macos): remove stale presence helper
* fix(deps): patch URI and Jaeger advisories
* test(gateway): adopt pairing-bound node sessions
2026-07-21 15:28:13 -07:00
Gio Della-Libera
138d2a5627
Add grouped Claw schema and read-only add plan ( #101328 )
...
* Add grouped Claw schema and read-only add plan
* test(claws): cover grouped schema and preview
* docs(claws): document experimental preview
* fix(claws): harden preview consent
* fix(claws): satisfy tool filter lint
* fix(claws): bind plans to validated sources
2026-07-21 14:50:36 -07:00
Kate Stahnke
4400f4ca91
fix(cron): hint after disable about list filtering disabled jobs ( #78139 )
...
* fix(cron): hint after disable about list filtering disabled jobs by default
* fix(cron): use !params.enabled in disable-hint guard for oxlint compliance
* docs(cron): clarify disabled jobs in list output
* fix(cron): keep disable hint interactive
* test(cron): use exported store snapshot helper
* test(cron): create disable-list regression job via service
* docs(cron): defer list default contract wording
* test(cron): tighten disable list coverage
Co-authored-by: Kate Stahnke <35552+kate@users.noreply.github.com >
* docs(cron): document enabled-only list default
Co-authored-by: Kate Stahnke <35552+kate@users.noreply.github.com >
---------
Co-authored-by: Kate <35552+kate@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-21 12:04:15 -07:00
Peter Steinberger
d725632ee7
refactor(channels): move channel-flavored setup flags into plugin manifests ( #112239 )
...
* refactor(channels): move channel-flavored setup flags into plugin manifests
* refactor(channels): normalize manifest cliAddOptions formatting, drop changelog entry
* fix(channels): dedupe channels add options by commander switch identity
* fix(channels): let the selected channel's cliAddOptions win switch dedupe
2026-07-21 02:50:19 -07:00
Peter Steinberger
6f43c50f37
fix(cli): preserve failure exit semantics ( #112210 )
2026-07-21 01:48:25 -07:00
Peter Steinberger
c5254f13ee
refactor(cli)!: remove automatic gateway→embedded fallback from openclaw agent ( #112074 )
...
A Gateway timeout or closed connection now fails the command with an
actionable stderr hint instead of silently re-running the whole turn
embedded under a fresh gateway-fallback-* session. The silent fallback
could double-execute side effects (the Gateway may still finish an
accepted turn), returned context-free answers to --session-key callers,
and ran with the CLI host's local config. --local remains the only
embedded execution path.
Also deletes the resultMetaOverrides plumbing (the fallback was its only
writer) and the fallback marker fields added in #111645 .
2026-07-20 23:30:37 -07:00
Peter Steinberger
78b49f3a05
docs: refresh stale cua-driver claims (cross-platform prerelease, real MCP tool names)
2026-07-20 22:18:21 -07:00
Peter Steinberger
6ef6c9a15d
fix(onboard): verify imported and local inference ( #112028 )
2026-07-20 21:35:22 -07:00
Peter Steinberger
d9cf85fa43
fix(cli): correct optional plugin guidance ( #112019 )
2026-07-20 21:31:30 -07:00
Peter Steinberger
b61619e03c
fix(gateway): dev mode suppresses ambient channel env auto-configuration ( #112011 )
...
Channel plugins declare package env triggers in manifests, and ambient
environment variables count as "channel configured". A dev gateway
(gateway run --dev) inherits the operator's shell, so real channel
credentials silently configured channels and could connect development
instances to live services (observed with reef and a Telegram-range
connection during isolated stress testing).
Dev mode now drops presence signals whose only sources are env or
manifest-env across activation planning, auto-enable, autostart, health
recovery, readiness, reloads, and startup warnings. Explicit
channels.<id> config still works, --dev-ambient-channels restores the
old behavior, and startup logs the suppressed channel ids once. Non-dev
gateways are unchanged.
2026-07-20 19:28:07 -07:00
Peter Steinberger
e3488e1d73
fix(setup): preserve invalid config during baseline setup ( #112010 )
2026-07-20 19:15:51 -07:00
Peter Steinberger
3d841472bd
fix(cli): align configure and channel wizard behavior ( #111720 )
2026-07-20 18:22:57 -07:00
Omar Shahine
e27e2d08fd
feat(policy): check authored message routing ( #111087 )
...
* feat(policy): check authored message routing
* fix(policy): normalize routing probe comparisons
* Policy: keep routing evidence types internal
* Docs: refresh policy map
---------
Co-authored-by: Omar Shahine <10343873+omarshahine@users.noreply.github.com >
2026-07-20 17:31:29 -07:00
Peter Steinberger
7cafe35bd5
fix(onboard): never silently remap an existing fleet's workspaces ( #111787 )
...
* fix(onboard): preserve agent workspaces on rerun
* fix(onboard): preserve first-run workspace setup
2026-07-20 16:16:04 -07:00
Peter Steinberger
8bec61bab1
fix(cli): reject unknown models in config set ( #111571 )
...
* fix(cli): validate configured model references
* fix(cli): cover dependent model references
* fix(cli): reject malformed model references
* test(cli): satisfy model validation gates
* fix(cli): harden model validation drafts
* fix(cli): preserve model runtime ownership
* fix(cli): validate expanded model references
* fix(cli): close model validation gaps
* fix(cli): preserve model alias ownership
* fix(cli): secure model validation context
* fix(cli): redact expanded model references
* fix(cli): validate inherited agent catalogs
* fix(cli): align canonical model resolution
* fix(cli): scope inherited catalog validation
* fix(cli): compare resolved model snapshots
* fix(cli): cover model dependency transitions
* fix(cli): isolate model env validation
* fix(cli): redact dependent model checks
* fix(cli): compare agent model identity
* fix(cli): validate expanded model removal
* fix(cli): defer unresolved fallback validation
* fix(cli): preserve authored model changes
2026-07-20 03:31:03 -07:00
Peter Steinberger
7fe1d70a50
fix(mcp): prevent custom server config races and parsing errors ( #111761 )
...
* fix(mcp): harden custom server management
* fix(ui): keep config patch types private
2026-07-20 02:34:13 -07:00
Peter Steinberger
250e636ffd
fix(onboard): reject invalid setup options before writes ( #111680 )
...
* fix(onboard): validate setup options before mutation
* fix(onboard): keep flow helper type local
2026-07-19 23:05:23 -07:00
Peter Steinberger
6d39d3cf0b
fix(onboard): preserve gateway settings on rerun ( #111569 )
...
* fix(onboard): preserve gateway config on rerun
* fix(onboard): scope remote secrets to endpoint
* fix(onboard): honor rerun override boundaries
* fix(onboard): secure inherited tailscale auth
* fix(onboard): honor explicit token auth
* fix(onboard): enforce funnel auth on rerun
* fix(onboard): preserve env password on rerun
2026-07-19 20:18:34 -07:00
Peter Steinberger
171a3852ba
fix: install exact app recommendations and retry failures ( #111518 )
...
* fix(onboard): preserve recommendation install retries
* fix(onboard): preserve bootstrap recommendation retries
* fix(onboard): commit recommendation outcomes after config
* fix(onboard): guard recommendation state transitions
* fix(onboard): reconcile durable skill installs
* docs(clawhub): clarify search publisher contract
2026-07-19 14:10:50 -07:00
Peter Steinberger
1a574923cb
fix(onboard): honor remote flags in interactive setup ( #111517 )
...
* fix(onboard): honor interactive remote flags
* fix(onboard): clear credentials for changed gateway
* fix(onboard): validate remote URL before probe
* test(onboard): mark synthetic remote tokens
* test(onboard): avoid literal credential fixtures
* refactor(onboard): name remote probe auth role
* refactor(onboard): keep remote probe seed canonical
* test(onboard): type remote URL validator mock
2026-07-19 13:25:46 -07:00
Marvinthebored
22c336c0b4
fix(plugins): load active generation after upgrades ( #111141 )
...
* fix(plugins): load newest managed generation when a prior install lingers
An upgrade writes a plugin's new version into a distinct managed project
directory (an `__openclaw-generation__` dir) without removing the previous one.
The persisted install record keeps pointing at the older, still-present
directory, so `mergeRecoveredManagedNpmRecord` falls through to returning the
persisted record and the runtime imports the stale version even though the newer
generation is installed. `isUnavailableManagedNpmInstallRecord` only self-heals
when the persisted path is gone, so an upgrading install (both directories
present) is not covered — `plugins inspect <id> --runtime` reports the old
version and `install`/`update` appear to silently no-op.
- Recovery now selects the highest-version record per plugin id across the
legacy flat dir and any generation dirs, instead of whichever project root
sorts last (generation-dir suffixes are hashes, so on-disk order is unrelated
to version).
- When the recovered managed install is a strictly newer version at a different
path, repoint to it, reusing the metadata merge the unavailable-path branch
uses. The repoint is gated to persisted records that live inside the managed
npm root, so intentional custom/outside npm installs are left untouched.
This is a recovery-layer self-heal, so it also repairs installs that already
diverged from an earlier upgrade.
Refs #107228
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
* fix(plugins): honor active managed generations
Recover ambiguous managed installs by package recency only when no usable active ledger path exists, and let doctor retire non-authoritative generations safely.
Co-authored-by: Peter Lindsey <peter@lindsey.jp >
* test(plugins): use shared temp cleanup
* fix(plugins): compare active paths per platform
* fix(plugins): use managed install timestamps
* test(plugins): timestamp managed project roots
* test(plugins): exclude retired legacy recovery
* refactor(plugins): keep recovery candidate private
---------
Co-authored-by: Peter Lindsey <peter@lindsey.jp >
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-19 12:50:35 -07:00
Peter Steinberger
c7e7ac2728
refactor: remove expired plugin compatibility surfaces ( #111451 )
...
* docs(secrets): remove retired web credential paths
* refactor(web): remove retired provider compatibility paths
* refactor(providers): delete retired compatibility routes
* refactor(secrets): remove retired credential aliases
* refactor(plugin-sdk): delete retired compatibility surfaces
* docs(plugin-sdk): remove retired migration guidance
* chore(plugin-sdk): refresh rebased surface budgets
* chore(plugin-sdk): refresh API removal baseline
* refactor(compat): migrate retired internal callers
* chore(plugin-sdk): refresh current-main baselines
* test(config): migrate plugin-owned secret assertions
* test(gateway): narrow plugin secret refs
* fix(plugin-sdk): preserve private boundary type identity
* chore(compat): remove stale sweep references
* chore(lint): lower max-lines budget
* refactor(secrets): remove unused web helper
* build(plugin-sdk): drop removed compat entries
* chore(plugin-sdk): refresh rebased API baseline
* chore(plugin-sdk): use Linux API baseline hash
* fix(plugin-sdk): preserve private bundled build entries
* fix(plugin-sdk): package private runtime facades
* fix(plugins): preserve external credential contracts
2026-07-19 11:04:48 -07:00
Peter Steinberger
783a5d21cf
refactor(config): purge numeric tuning knobs behind built-in defaults ( #111382 )
2026-07-19 07:35:45 -07:00
Peter Steinberger
d685037c6e
fix(workboard): avoid duplicate proof entries on completion ( #111324 )
...
* fix(workboard): resolve duplicate completion proof
* fix(workboard): import proof cap from constants
* fix(workboard): correlate completion proof by id
* fix(workboard): reuse terminal completion proof
* fix(workboard): retain correlated proof under budget
2026-07-19 03:00:37 -07:00
Peter Steinberger
b9fa1ffa27
feat(gateway): system change history RPC and Ask OpenClaw recent-changes panel ( #111286 )
...
* feat(gateway): system change history RPC and Ask OpenClaw recent-changes panel
* test(gateway): fix journal fixtures, split custodian page tests, refresh docs map
* chore: quiet lint on journal reader tests and custodian harness
2026-07-19 02:38:05 -07:00
Peter Steinberger
58452de711
refactor(config): config-surface reduction tranche 1 — retire dead keys, dedupe channel schemas, add growth ratchet ( #111142 )
...
* refactor(config): retire dead and aliased config keys via doctor migrations
* refactor(config): dedupe bundled channel config schemas into shared builders
* feat(config): add config-surface count ratchet to doc-baseline check
* test(config): drop stale fixtures for retired config keys
* fix(doctor): migrate only positive finite MCP timeout aliases
* fix(migrate-hermes): emit canonical MCP timeouts only
* fix(config): satisfy lint and contract gates
2026-07-19 00:52:37 -07:00
Jason (Json)
9c7800467c
feat(mcp): open App views from channel replies ( #111211 )
...
* feat(mcp): add portable channel app actions
* test(gateway): keep origin reset private
* fix(mcp): require a resolved reply channel
2026-07-19 01:44:15 -06:00
LZY3538
7055ed578d
fix(wizard): honor process locale when overrides are blank ( #111076 )
...
* fix(wizard): ignore blank locale env overrides
* test(wizard): cover locale fallback chain
* docs(wizard): document locale env precedence
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-18 23:28:03 -07:00
Peter Steinberger
a2ccbdfa96
feat(cli): list and resolve pending approvals headlessly ( #111060 )
...
* feat(cli): manage pending approvals
* fix(cli): show terminal-safe approval ids raw, reserve id64 tokens for hostile ids
* fix(cli): preserve opaque approval ids verbatim
* fix(cli): tokenize leading-hyphen approval ids for pasteability
* fix(cli): lossless utf16 id64 tokens for opaque approval ids
* fix(cli): resolve approval ids verbatim, no input trim
* fix(cli): scope-only approval auth, reviewer-safe system-agent summaries, skip ill-formed ids
* fix(cli): validate pending approval ids
* fix(cli): align approvals catalog and docs map
2026-07-18 23:23:49 -07:00