Peter Steinberger
e9b7a9a912
fix(memory): search by filenames and paths ( #104449 )
...
Co-authored-by: Pick-cat <huang.ting3@xydigit.com >
2026-07-11 10:54:34 -07:00
Peter Steinberger
96f0983a85
fix(onboarding): skip setup for configured gateways and require inference first ( #102883 )
...
* fix(crestodian): keep onboarding RPCs restart-safe
* fix(profiles): isolate approval state migrations
* fix(crestodian): bypass configured gateway setup
* test(crestodian): type onboarding mocks
* fix(onboarding): require inference before Crestodian
* fix(onboarding): enforce verified inference handoff
* fix(macos): reset setup on gateway endpoint edits
* chore(i18n): refresh native source inventory
* fix(gateway): keep socket on request cancellation
* test(packaging): require workspace templates
* fix(onboarding): bind setup to verified inference
* fix(onboarding): align inference gate contracts
* fix(crestodian): classify concurrent policy rejection
* test(crestodian): expect registry restoration
* fix(onboarding): bind setup to configured gateways
* fix(codex): preserve startup phase deadlines
* test(crestodian): match fail-closed policy ordering
* test(onboarding): assert bound gateway handoff
* fix(codex): bind runtime resolution to spawn cwd
* test(crestodian): assert policy rejection order
* fix(cli): preserve gateway routing across restarts
* fix(macos): fail closed during gateway edits
* test(macos): cover gateway route generation races
* chore: keep release notes out of onboarding PR
* fix(ci): refresh onboarding generated checks
* style(swift): align gateway channel formatting
* fix(ci): refresh plugin SDK surface budgets
* fix(ci): resync native string inventory
* refactor(swift): split gateway channel support
* test(doctor): isolate plugin compatibility registry
* test(macos): isolate gateway onboarding fixtures
* test(macos): assert gateway lease health ordering
* fix(codex): reconcile computer-use startup changes
2026-07-11 10:25:14 -07:00
Peter Steinberger
5ca46a6554
feat(cloud-workers): pinned SSH tunnel runtime and provider-owned key resolution ( #104553 )
...
* feat(cloud-workers): add pinned SSH tunnel runtime
* feat(crabbox): resolve cloud worker SSH identities
* docs(cloud-workers): document SSH tunnel contracts
2026-07-11 09:26:08 -07:00
Peter Steinberger
03cab29505
feat(cloud-workers): worker bundle production, pinned SSH bootstrap, and admission handshake ( #104532 )
...
* feat(gateway-protocol): add worker admission handshake
* feat(cloud-workers): build and bootstrap worker bundles
* feat(cloud-workers): wire bootstrap lifecycle
* fix(cloud-workers): state host-key TOFU fallback without warning-comment suppression
* test(cloud-workers): assemble host-key fixture to satisfy review secret scanner
* test(cloud-workers): assemble redaction fixture to satisfy review secret scanner
* fix(cloud-workers): require pinned SSH host keys
* fix(state): add ssh_host_key to additive worker_environments migration
2026-07-11 08:14:30 -07:00
Peter Steinberger
e681646834
feat(cloud-workers): add crabbox worker provider plugin and profile-aware lease lifecycle ( #104465 )
...
* feat(cloud-workers): add Crabbox worker provider
* docs(cloud-workers): document Crabbox profiles
* chore(cloud-workers): drop changelog entry (release-only file)
* refactor(plugin-sdk): pass profiles to worker lease lifecycle
* docs(plugin-sdk): document worker lifecycle profiles
* chore(docs): regenerate plugin inventory, docs map, and sdk baseline after rebase
* fix(cloud-workers): state crabbox key-ref gap without warning-comment suppressions
2026-07-11 05:51:56 -07:00
Peter Steinberger
90e465833b
feat(gateway): durable cloud worker environments, provider SDK contract, and lifecycle RPCs ( #104401 )
...
* docs(plan): add cloud workers design plan
* feat(plugin-sdk): add cloud worker provider foundations
* feat(protocol): add worker environment lifecycle shapes
* feat(gateway): persist worker environment lifecycles
* test(gateway): pin environment inventory assertion for damaged worker store
* style(cloud-workers): satisfy lint and docs formatting
* fix(gateway): narrow worker environment type boundaries
* chore(plugin-sdk): account for WorkerProvider surface growth
* docs: regenerate docs map
2026-07-11 04:54:27 -07:00
Vincent Koc
92467325c0
chore(plugin-sdk): refresh rebased API baseline
2026-07-11 16:22:22 +08:00
Vincent Koc
85a61aac23
chore(plugin-sdk): refresh API baseline
2026-07-11 16:22:22 +08:00
Vincent Koc
e62c216d75
refactor(embeddings): inject local service acquisition
2026-07-11 16:22:22 +08:00
Peter Steinberger
49b58288d3
feat(plugins): add cron reconciliation lifecycle hook ( #104191 )
...
* feat(plugins): add cron reconciliation lifecycle hook
* chore(plugin-sdk): refresh api baseline
* fix(plugin-sdk): update public export budget
2026-07-10 23:05:12 -07:00
Peter Steinberger
81a201df26
feat: add portable table presentation blocks ( #103583 )
...
* feat(presentation): add portable table blocks
* chore(presentation): refresh generated contracts
* fix(slack): preserve table fallback payloads
* docs(changelog): note portable message tables
* fix(presentation): preserve cross-channel fallback delivery
* chore(plugin-sdk): refresh rebased contracts
* test(slack): align accessibility expectations
* fix(presentation): harden cross-channel fallback delivery
* chore(plugin-sdk): refresh rebased contracts
* docs(changelog): defer portable table release note
* fix(presentation): satisfy extension lint
* chore(plugin-sdk): refresh surface budgets
* fix(telegram): preserve reactions after progress replies
* fix(slack): preserve rendered preview fallback text
* fix(feishu): preserve oversized presentation fallbacks
* docs(changelog): note portable message tables
* docs(changelog): defer portable table release note
* chore(plugin-sdk): refresh rebased contracts
---------
Co-authored-by: Peter Steinberger <steipete@openai.com >
2026-07-10 22:29:13 -07:00
Peter Steinberger
dba64d574f
chore(release): set version to 2026.7.2
2026-07-11 04:00:49 +01:00
xingzhou
babc287afe
fix(slack): time out stalled external file uploads ( #103442 )
...
* fix(slack): time out stalled external file uploads
* fix(slack): scope external upload timeout
* fix(slack): restrict external upload transport
* fix(slack): restrict external upload transport
* fix(slack): preserve external upload retry safety
* test(slack): use compatible guarded fetch runtime
* test(plugin-sdk): update public export baseline
* fix(slack): harden external upload delivery
* refactor(slack): isolate upload completion
Keep ordinary Enterprise Grid traffic on the Bolt listener client. Use a team-scoped no-retry client only for one-shot external upload completion, while preserving the bounded raw-upload timeout and safe durable replay classification.
* fix(slack): refresh upload release metadata
* chore(slack): leave release notes release-owned
* fix(slack): classify failed uploads before completion
* fix(slack): keep upload completion untimed
* test(plugin-sdk): refresh public export baseline
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-10 23:52:35 +01:00
Peter Steinberger
2d7472b3e4
fix(cron): emit scheduled events after durable wake changes ( #103647 )
...
* fix(cron): emit scheduled events after durable wake changes
* chore(changelog): defer cron note to release
* chore(docs): refresh plugin SDK baseline
2026-07-10 17:39:23 +01:00
Yuval Dinodia
b7ab62c2cf
fix(mattermost): preserve text-block boundaries in draft preview ( #87322 ) ( #87449 )
...
* fix(mattermost): preserve text-block boundaries in draft preview (#87322 )
* fix(mattermost): preserve block preview boundaries
* fix(mattermost): reset progress at tool boundaries
* docs(plugin-sdk): refresh API baseline
* fix(mattermost): group parallel tool previews
* fix(mattermost): stage tool previews before awaits
* fix(mattermost): satisfy tool boundary return contract
* fix(mattermost): serialize preview block generations
Co-authored-by: Yuval Dinodia <yetvald@gmail.com >
* fix(mattermost): preserve complete block previews
* test(agents): align streaming assertions
* test(telegram): align reply pipeline mock
* fix(plugin-sdk): keep reply prefix options compatible
* test(mattermost): exercise threaded final participation
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-10 14:32:11 +01:00
Peter Steinberger
add2c586c2
feat(slack): support native chart presentations ( #102635 )
2026-07-10 04:05:23 +01:00
Ayaan Zaidi
c64db7c9c7
feat(plugin-sdk): export dashboard bootstrap helpers
2026-07-10 07:53:37 +05:30
Peter Steinberger
d185f9a0b4
fix(infra): preserve characters in truncated response snippets ( #103136 )
...
* fix(infra): preserve bounded response text characters
Co-authored-by: qingminlong <34085845+qingminglong@users.noreply.github.com >
* ci(plugin-sdk): refresh API baseline
---------
Co-authored-by: qingminlong <34085845+qingminglong@users.noreply.github.com >
2026-07-09 23:43:26 +01:00
VACInc
740e7687e8
fix(anthropic): don't crash models list when a configured Sonnet 5 model has no cost ( #102186 )
...
* fix(anthropic): don't crash models list when a configured Sonnet 5 model has no cost
applyAnthropicSonnet5Cost read params.model.cost.input unconditionally, so
'openclaw models list' aborted with 'Cannot read properties of undefined
(reading input)' whenever config supplied an anthropic Sonnet 5 model row
without cost metadata (e.g. an agents.defaults.models runtime binding).
Guard with optional chaining — a costless model now falls through and gets
the canonical Sonnet 5 cost applied.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
* fix(models): normalize missing Sonnet 5 costs
Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com >
* chore(plugin-sdk): refresh API baseline
* ci(plugin-sdk): update surface budgets
---------
Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com >
Co-authored-by: Claude Fable 5 <noreply@anthropic.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-09 22:13:56 +01:00
Sally O'Malley
e595a8c0ac
Add Vault SecretRef plugin ( #89255 )
...
* Add Vault SecretRef plugin
Signed-off-by: sallyom <somalley@redhat.com >
* expand Vault setup to registered SecretRef targets
Signed-off-by: sallyom <somalley@redhat.com >
* fix(vault): use sdk secret target seam
* fix(vault): preserve auth profile target paths
* docs(vault): document plugin enable step
* fix(vault): make status provider-alias aware
* fix(vault): reject noncanonical secret ids
* fix(vault): separate resolver timeout deadlines
* fix(vault): forward private CA trust settings
* fix(secrets): preserve plugin policy boundaries
---------
Signed-off-by: sallyom <somalley@redhat.com >
Co-authored-by: joshavant <830519+joshavant@users.noreply.github.com >
2026-07-09 05:30:12 -05:00
kevinlin-openai
245b91b83d
feat(slack): support Enterprise Grid org installs ( #102372 )
...
* feat(slack): support Enterprise Grid org installs
* docs: refresh generated docs map
* fix(slack): satisfy enterprise routing CI
* fix(slack): accept org auth without app id
* docs(plugin-sdk): document channel policy hooks
* fix(slack): reuse canonical sender for enterprise replies
* test(slack): fix enterprise sender lint
---------
Co-authored-by: Kevin Lin <kevin@dendron.so >
2026-07-08 23:53:19 -07:00
Vincent Koc
6630138598
chore(plugin-sdk): refresh API baseline
2026-07-08 17:51:24 -07:00
Vincent Koc
c96c60d22d
chore(plugin-sdk): refresh API baseline hash
2026-07-08 02:27:34 +02:00
Vincent Koc
1805f7ee17
chore(plugin-sdk): refresh api baseline hash
2026-07-07 13:30:20 +02:00
Josh Lehman
5d9a2b114f
feat(context-engine): report compaction successors as typed session targets ( #101182 )
2026-07-06 22:14:46 -07:00
Vincent Koc
d39d57edc3
ci(sdk): refresh plugin api baseline hash
2026-07-07 06:46:57 +02:00
Josh Lehman
cb0d8a1294
refactor(sessions): move inbound meta, goals, and delivery reads behind the session accessor ( #101180 )
2026-07-06 18:07:26 -07:00
Dallin Romney
5af7ba92ce
refactor: consolidate byte-size formatting ( #99768 )
...
* refactor: consolidate byte-size formatting
* fix: stabilize byte formatter import boundary
* fix: keep byte formatter within SDK budget
* fix: emit byte formatter package entry
* refactor: trim byte formatter surface
* fix: use narrow byte formatter import
* refactor: remove byte formatter dependency changes
* fix: refresh rebased byte formatter baseline
2026-07-06 09:26:04 -07:00
Peter Steinberger
f53346944d
feat: correlate native search outcomes in audit history ( #98704 )
...
* feat: correlate native search outcomes in audit history
Metadata-only audit ledger for agent runs and tool actions in the shared
state DB: stable event identity, closed action/status/error vocabularies,
one-way-hashed tool-call ids, never-inferred terminal outcomes for native
web-search (explicit completed/failed only; otherwise unknown), bounded
retention, audit.list gateway RPC and openclaw audit CLI. Squashed from
the 82-commit audit stack for replay onto current main.
* feat(audit): add audit.enabled config gate (default on)
The metadata-only audit ledger records by default: an audit trail enabled
only after an incident cannot explain the incident, and the rows are
strictly less sensitive than the transcripts every install already
stores. audit.enabled=false stops new writes at the gateway subscription
seam; audit.list and openclaw audit keep serving existing records until
they expire. Documented in the configuration reference, protocol page,
and CLI reference.
* fix: repair full-matrix CI findings after rebase
- break the dynamic-tools/dynamic-tool-execution import cycle by
extracting resolveCodexToolAbortTerminalReason into a leaf module
- restore main's session-worktree protocol exports lost in the
index.ts auto-merge
- register the audit event writer worker as a knip entry point
- docs table formatting; subagent wait-cancellation test scoped to its
audit intent (outcome + timing) and advanced past main's new
lifecycle-timeout retry grace
2026-07-06 12:30:12 +01:00
Vincent Koc
0bd2a0b879
ci(sdk): refresh plugin api baseline hash
2026-07-06 05:02:28 +02:00
clawSean
d84aabf642
feat: add channel pairing request hook ( #97733 )
...
* feat: add channel pairing request hook
* fix(plugin-sdk): keep pairing hook types internal
* docs: regenerate docs map
* docs: regenerate docs map
* docs: regenerate docs map
* fix(plugin-sdk): keep pairing hook types internal
* fix(plugin-sdk): keep pairing hook types internal
* docs: refresh plugin hook docs
* docs: refresh plugin hook docs
* docs: refresh plugin hook docs
---------
Co-authored-by: clawSean <260045960+clawSean@users.noreply.github.com >
Co-authored-by: Omar Shahine <omarshahine@users.noreply.github.com >
2026-07-05 19:11:58 -07:00
Vincent Koc
1a37cafd63
ci(sdk): refresh realtime tool api baseline hash
2026-07-05 23:51:26 +02:00
Vincent Koc
aa66581749
ci(sdk): refresh plugin api baseline hash
2026-07-05 23:13:49 +02:00
Peter Steinberger
862de9f1a1
fix(pairing): advertise reachable Tailnet routes ( #100317 )
...
* fix(pairing): advertise reachable tailnet routes
* fix(pairing): satisfy native and SDK checks
* fix(ios): cancel stale pairing route probes
* test(pairing): document LAN-only Serve fallback
* fix(ios): preserve pairing result initializer
2026-07-05 07:43:43 -07:00
Vincent Koc
c3bcbf59b1
fix(plugin-sdk): refresh api baseline hash
2026-07-05 15:56:28 +02:00
Vincent Koc
8a8af77236
fix(plugin-sdk): refresh api baseline hash
2026-07-05 12:17:14 +02:00
LZY3538
e6ec74c254
fix(compaction): preserve Anthropic context usage ( #99864 )
2026-07-05 02:33:43 -07:00
Vincent Koc
53bd4dde6c
fix(ci): stabilize manual dispatch checkout
2026-07-05 10:22:26 +02:00
Vincent Koc
c29054a7dc
chore(plugin-sdk): refresh API baseline hash
2026-07-05 07:30:57 +02:00
Peter Steinberger
f7d7148cf0
docs: rewrite published docs grounded in current source ( #100142 )
...
Source-grounded rewrite of 529 published docs pages with per-unit information-loss verification: 1,713 factual corrections cited to src/**, generated surfaces regenerated, frontmatter titles preserved for i18n, release notes pages untouched. All docs gates green.
Closes #100141
2026-07-05 00:32:47 -04:00
Vincent Koc
48d12dcc8d
chore(plugin-sdk): refresh API baseline hash
2026-07-05 03:54:37 +02:00
Dallin Romney
bfffa950d7
refactor(plugin-sdk): consolidate tool result helpers ( #99740 )
...
* refactor(plugin-sdk): consolidate tool result helpers
* docs(plugin-sdk): tighten tool result guidance
* refactor(feishu): use tool results directly
2026-07-04 16:50:44 -07:00
xingzhou
27d6c88167
feat: add utility models and generated session titles ( #87643 )
...
* feat: add utility model session titles
* docs: clarify utility model calls
* fix: budget utility title reasoning
* docs: refresh config baseline
* docs: refresh plugin sdk baseline
* docs: refresh plugin sdk baseline
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-04 17:24:51 -04:00
Peter Steinberger
6df0fb818d
feat: add session thread management ( #98510 )
...
* feat: add session thread management
Squash of codex/thread-management (025aefc3ad1) onto origin/main:
pin/archive/rename sessions via sessions.patch, archived-aware
sessions.list, lifecycle fencing, read-only archived chat, SDK +
Swift protocol support, Control UI session management.
* refactor(ui): minimal session rows with hover-revealed management
Chat picker and sidebar recents share session-row primitives: single-line
rows, relative timestamps, rename/archive/pin revealed on hover or focus,
accent pin badge for pinned rows, and an active-run spinner in the trail
slot. Sidebar floats pinned sessions above recency via the shared
comparator and gains archive/pin actions through the unified sessions-view
patch fallback. Archive eligibility is one shared policy
(canArchiveSessionRow); the sidebar/picker active-run tooltip now uses the
real sessionsView.activeRun locale key.
* fix: align session admission with mailbox-era main
Integration fixes after rebasing onto current main: sessions_list mailbox
test expectations learn the archived/pinned row fields and archived:false
list param; gateway agent admission treats a session as deleted only when
both the requested and canonical alias sets miss it (legacy bare-main
stores and exec-approval followups read under different spellings); cron
persist tests keep a consistent store across claim-guarded persist calls;
the ACP abort hook test asserts abort propagation instead of signal
identity; drop dead lifecycle writes flagged by no-useless-assignment and
fix the promise-executor return in the codex compact test.
* fix(qa): align UI e2e and shard fixtures with redesigned session rows
Sidebar session rows are wrapper divs with an inner link now: update the
navigation browser tests and chat-flow Playwright selectors. Seed a real
per-test session store for the auto-fallback admission guard instead of
depending on leftover host files at /tmp/sessions.json. Teach the
test-projects routing fixture about the suites that newly import the
shared temp-dir helper. Document the Codex thread-format contract for
archivedAt/pinnedAt (flag derived from server-stamped timestamp, epoch ms
here vs Codex epoch seconds) at the type and in the session docs.
* test: route auto-fallback suite through temp-dir helper plans
The auto-fallback suite now imports the shared temp-dir helper for its
seeded session store, so the top-level helper routing fixture must list
it in the auto-reply plan.
2026-07-04 14:30:47 -04:00
Peter Steinberger
49cc59b1e8
refactor: consolidate markdown code fences, error coercion, and byte-identical helper pairs ( #99932 )
...
* refactor(shared): add markdown code span/fence helpers and migrate seven call sites
* refactor(normalization-core): add canonical toErrorObject and migrate six copies
* refactor: consolidate byte-identical helper pairs onto owner modules
* refactor: reuse canonical path and token helpers in session tools and credentials
* refactor(packages): dedupe compaction summarization tail and session dir parsing
* fix(security): keep missing extensions dir silent in shared plugin dir lister
* refactor: reuse media-core chunk reader and shared dreaming session key helper
* fix(plugins): register error-coercion subpath in sdk alias table
* chore(plugin-sdk): re-pin callable export count after rebase
* chore(plugin-sdk): re-pin callable export count after rebase
2026-07-04 08:40:41 -04:00
Vincent Koc
020f44aba8
chore(docs): refresh plugin SDK API baseline hash
2026-07-04 14:03:46 +02:00
Vincent Koc
46ad3f9ae9
chore(docs): refresh plugin generated baselines
2026-07-04 13:05:58 +02:00
Vincent Koc
f53fdb688d
fix(qa): restore package docker gates
2026-07-04 01:56:21 +02:00
Ayaan Zaidi
53fe2e4bc3
refactor(auth): simplify codex login follow-up
2026-07-01 11:16:49 -07:00
Josh Lehman
bde0e4541e
refactor: share codex login flow helpers
2026-07-01 11:16:49 -07:00