Peter Steinberger
d6971f46ca
fix: make filesystem publication crash-durable ( #113453 )
...
* fix(fs): centralize directory durability
* chore: keep release notes in PR body
* test(sqlite): canonicalize read-only race paths
* test(fs): clean durability fixtures
* chore(lint): prune sqlite snapshot baseline
* fix(backup): reject unsupported commit sync
* fix(fs): enforce strict durability outcomes
* refactor(tls): flatten preserved-output failures
* fix(reef): require durable journal commits
* fix(fs): route durability through policy boundaries
* fix(reef): preserve Windows journal compatibility
* fix(fs): bind publication to canonical directories
* fix(ci): align durability boundary fixtures
2026-07-24 20:58:17 -07:00
Gio Della-Libera
e9b3252ae8
feat(claws): separate portable and OpenClaw profiles ( #112773 )
...
* feat(claws): add portable agent policy settings
* fix(claws): align portable agent policy
* fix(claws): preserve host policy boundaries
* feat(claws): separate portable and OpenClaw profiles
* test(claws): align profile fixtures with portable schema
* fix(claws): align portable profile boundaries
2026-07-24 12:06:02 -07:00
Vincent Koc
f1afaa3d0e
fix(sqlite): snapshot through online backup ( #113385 )
2026-07-25 03:03:33 +08:00
Peter Steinberger
f41e28202f
fix(plugins): keep feed trust within env budget ( #113364 )
2026-07-24 09:19:14 -07:00
Gio Della-Libera
f88e7e46a1
feat: bind signed ClawHub default feed trust ( #101981 )
...
* feat: bind signed ClawHub feed trust
* fix(feeds): preserve trust and enforce expiry
* fix(feeds): enforce signed catalog HTTP contract
* fix(feeds): align signed feed validation
* fix: preserve hosted catalog trust boundaries
* fix(feeds): stage custom feed identity binding
* fix(feeds): require complete entry trust authority
* fix(feeds): retain feed schema trust context
* fix(feeds): enforce schema trust before overlays
* fix(feeds): satisfy catalog trust CI checks
---------
Co-authored-by: Gio Della-Libera <giodl@microsoft.com >
2026-07-24 07:27:09 -07:00
Vincent Koc
3bfc23c676
fix(backup): publish archives durably ( #113302 )
2026-07-24 19:12:11 +08:00
joshavant
3b1460a74d
fix(worker): preserve scheduled tool authority
2026-07-24 01:24:03 -05:00
FMLS
b88eeddeed
feat(browser): add openclaw browser batch CLI subcommand ( #111457 )
...
* feat(browser): add `openclaw browser batch` CLI subcommand
Expose the existing `act:batch` runtime through a dedicated CLI subcommand so
users and scripts can run nested act requests in one call without going through
the agent tool.
- `--actions <json>` for inline JSON, `--actions-file <path>` for file input,
`--actions-file -` for stdin (1MB cap to bound a runaway pipe)
- `--continue` sets `stopOnError=false`; default keeps the runtime fail-fast
(stop on first error) behavior, matching the existing batch contract
- `--target-id` forwards to the batch body
- Outer request timeout uses `resolveBrowserActExecutionBudgetMs` so the batch
budget covers nested actions
- Docs (`docs/tools/browser-control.md` + bundled `browser-automation` skill)
document the batch CLI, ref lifecycle, targetId conflict handling, and error
summary format
Co-authored-by: Cursor <cursoragent@cursor.com >
* fix(browser): fail batch CLI on action errors
* fix(browser): keep batch stdin reader private
* docs(browser): refresh batch heading map
* test(browser): assert batch JSON via runtime mock
---------
Co-authored-by: Cursor <cursoragent@cursor.com >
Co-authored-by: Mason Huang <masonxhuang@icloud.com >
Co-authored-by: Mason Huang <masonxhuang@proton.me >
2026-07-24 11:33:45 +08:00
Peter Steinberger
129f86bbf5
feat: auto-collect durable meeting transcripts ( #113122 )
...
* feat(meetings): auto-collect durable transcripts
* chore(plugin-sdk): refresh meeting transcript API baseline
* fix(plugin-sdk): keep meeting transcript options implicit
* fix(meetings): satisfy transcript bridge typecheck
* fix(google-meet): preserve optional caption policy context
* fix(google-meet): retain caption mode callback type
* refactor(meetings): split transcript lifecycle helpers
* chore(plugin-sdk): refresh split meeting runtime baseline
* refactor(google-meet): split session helpers
* fix(meetings): decouple transcript retries from leave
* fix(meetings): isolate provider subscribers
* fix(meetings): harden capture lifecycle
* fix(meetings): preserve capture during storage outages
* fix(meetings): preserve pending transcript ordering
* fix(meetings): retry capture initialization
* test(agents): reflect default transcript registration
2026-07-23 11:41:08 -07:00
Peter Steinberger
3e2b3ea4d5
feat(cron): database-backed heartbeat monitor scratch replaces HEARTBEAT.md ( #112967 )
...
* feat(cron): move heartbeat context into database-backed per-job cron scratch
- new additive cron_job_scratch SQLite table (revision tombstones keep
compare-and-swap monotonic across unset/recreate; 256KiB cap)
- heartbeat runner reads monitor scratch instead of workspace HEARTBEAT.md;
heartbeat_respond gains a private scratch replacement parameter
- openclaw doctor --fix migrates HEARTBEAT.md into scratch (hash-verified,
archived under state backups, idempotent, symlink-contained)
- gateway cron.scratch.get/set admin RPCs + openclaw cron scratch CLI
- workspace bootstrap no longer seeds HEARTBEAT.md; Codex heartbeat file
guidance removed; docs and prompt snapshots updated
* fix(cron): review round 2 — shared-workspace heartbeat migration and non-default agent monitors
- doctor migration groups agents by heartbeat source file and imports into
every monitor before archiving/removing the shared file once
- exempt heartbeat payloads from the main-session default-agent restriction:
monitors only poke the wake bus, so non-default agents converge again
- document why disabled monitors retain their last cadence (config default
already resolves before the fallback)
* fix(cron): honor configured cron store, legacy heartbeat fallback, and safer doctor claim
* fix(cron): claim HEARTBEAT.md before committing scratch and restore without clobbering
* fix(cron): pin migration CAS to precondition revision, re-verify claim on release, archive first, report scratch as pending
* docs(heartbeat): remove retired config options
* fix(cron): crash-recoverable migration claims, partial-import rollback, latest-response scratch pairing
* test(heartbeat): keep latest scratch proposal paired
* fix(cron): roll back committed scratch on changed-claim release and restore no-row state
* fix(cron): revision-guarded rollback delete and recreated-file detection on claim release
* fix(cron): treat every failed claim re-verification as a migration conflict
* test(heartbeat): rename ack test after ackMaxChars retirement
* fix(heartbeat): keep monitor scratch out of bypass-scope runs
* fix(cron): resolve claimed symlinks on release and gate legacy fallback on proven scratch state
* fix(cron): strict claim-name recovery and per-entry migration grouping
* fix(ci): heartbeat scratch gate repairs — lint causes, dead exports, since-train, inventory path, prompt snapshot, regenerated docs map, SDK baseline, protocol bindings
* fix(cron): live-owner claim guard and canonical entry-key migration grouping
* fix(cron): archive claimed inode on release and flag orphan claims beside recreated files
* docs(cron): document process-global state-db invariant for scratch service ops
* chore(i18n): refresh native inventory line numbers after protocol binding regen
2026-07-23 11:10:49 -07:00
Gio Della-Libera
8bed69a26f
fix(claws): normalize cron defaults during removal ( #113045 )
...
Fixes Claw cron removal by normalizing scheduler default cron tool authority before comparing Claw-managed cron config. This lets a live Gateway cron job with the persisted default `payload.toolsAllow: ["*"]` match a Claw manifest that omitted the default cap, while preserving explicit tool caps.
Validation:
- `git diff --check origin/main...HEAD`
- `pnpm exec oxlint --deny-warnings src/claws/cron.ts src/claws/lifecycle-state.test.ts`
- `node scripts/run-vitest.mjs src/claws/lifecycle-state.test.ts src/claws/cron.test.ts`
- Hosted exact-head gates passed for `410ac9e74cb3f009713107e65390accb8303ec31`: CI#30024039807, Workflow Sanity#30024039519
- ClawSweeper exact review run 30024149686 completed successfully for this head
Co-authored-by: Gio Della-Libera <235387111+giodl73-repo@users.noreply.github.com >
2026-07-23 09:44:19 -07:00
Peter Steinberger
a2be4efb63
refactor(transcripts): store meeting captures in SQLite ( #112910 )
...
* refactor(transcripts): move meeting transcripts to sqlite
* perf(transcripts): batch legacy utterance staging
* fix(transcripts): report recovery moves on migration failure
* fix(transcripts): refresh archive membership after recovery
* fix(transcripts): omit failed summary export paths
* fix(transcripts): type restore metadata tuple
* fix(transcripts): align migration contract gates
* fix(transcripts): verify case-aliased export ownership
* fix(transcripts): allowlist doctor verifier sqlite query
* fix(transcripts): preflight partial artifact recovery
* fix(transcripts): stabilize exports and legacy path checks
* fix(transcripts): resolve case-renamed doctor ownership
* fix(transcripts): harden canonical export recovery
* fix(transcripts): preserve pending import boundaries
* refactor(transcripts): split migration insert transaction
* perf(transcripts): query selected summary existence
2026-07-23 07:18:55 -04:00
Peter Steinberger
852548ce05
feat(onboard): stage migration imports before promotion ( #112798 )
...
* feat(onboard): stage migration imports before promotion
* fix(onboard): harden migration recovery
* fix(onboard): commit promoted config with CAS
* fix(onboard): resume setup after migration recovery
* test(onboard): split noninteractive migration coverage
* refactor(onboard): split migration promotion helpers
* fix(onboard): normalize migration preparation cleanup
* fix(onboard): preserve recovered inference ownership
* fix(codex): complete empty deferred plugin config
* fix(codex): reconcile deferred plugin config retries
* fix(onboard): resolve verification target after rebase
* refactor(onboard): trim retired migration exports
* test(onboard): assert read-only auth prompt store
2026-07-23 07:06:01 -04:00
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