ZOOWH
fb702e5cae
fix(memory): harden embedding batch workflows ( #103472 )
...
* fix(memory): harden embedding batch workflows
Co-authored-by: 徐闻涵0668001344 <xu.wenhan1@xydigit.com >
Co-authored-by: ben.li <li.yang6@xydigit.com >
* test(memory): align batch redaction expectation
* test(memory): tighten batch dependency types
* refactor(google): clarify batch state control flow
* test(google): make batch stage fallback lint-safe
* build(plugin-sdk): refresh memory batch surface budget
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
Co-authored-by: ben.li <li.yang6@xydigit.com >
2026-07-11 16:43:58 -07:00
Vincent Koc
a7764d4366
fix(auth): preserve Codex login profile identity
2026-07-12 07:40:35 +08:00
Eva
030fa62b79
fix(telegram): preserve codex login profile identity
2026-07-12 07:40:35 +08:00
Peter Steinberger
c3a8e60adc
fix: doctor repairs Voice Call SQLite schema upgrades ( #104752 )
...
* fix(doctor): repair voice-call SQLite schema
* chore: keep release notes in PR body
* test(plugin-sdk): update public surface budget
2026-07-11 16:05:59 -07:00
Vincent Koc
266d49cddb
fix(codex): migrate legacy session ownership to sqlite
2026-07-12 06:50:30 +08:00
NianJiu
da6a24d7dc
fix(reply): prevent hung pre-delivery hooks from blocking lanes ( #104256 )
...
* fix(reply): bound pre-delivery hook settlement
* test(plugins): preserve hook timeout fixtures
* fix(reply): preserve declared pre-delivery budgets
* chore(reply): finalize pre-delivery recovery
* fix(reply): preserve per-final recovery semantics
* fix(reply): guard pending-final settlement identity
* test(reply): align pending-final store fixture
* fix(reply): bind settlement to originating intent
* test(reply): satisfy timeout fixture lint
* chore(plugin-sdk): refresh rebased baseline
* fix(reply): preserve normalized retry ownership
* fix(reply): narrow pending retry metadata
* fix: align reply dispatch state access
* chore(plugin-sdk): refresh rebased surface baseline
* test(reply): align rebased accessor assertion
* chore(plugin-sdk): regenerate drifted API baseline
---------
Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-11 15:47:15 -07:00
Vincent Koc
c1e70b9a7f
refactor(plugin-sdk): inject memory local service per call
2026-07-12 06:33:57 +08:00
Peter Steinberger
1b1cebfe42
fix(openai): align auth availability with effective routes ( #104685 )
...
* feat(openai): add provider-owned route facts
* fix(openai): harden provider route facts
* test(codex): update rebased auth fixtures
* chore: leave release notes to release workflow
* fix(openai): align route auth with current contracts
* test(openai): align route and shard expectations
* test(openai): satisfy route fixture contracts
* fix(openai): preserve direct profile forwarding
* test(models): complete route auth mocks
* test(codex): type compaction factory mock
* fix(openai): preserve provider-native model ids
* test(agents): align route auth fixtures
* style(agents): format route integrations
* test(plugin-sdk): pin current surface counts
2026-07-11 15:26:48 -07:00
Josh Lehman
0a8e3604ba
refactor: flip sessions and transcripts to sqlite storage ( #98236 )
...
* refactor(sessions): migrate runtime storage to sqlite
* test(sessions): fix sqlite CI regressions
* test(sessions): align remaining sqlite fixtures
* fix(codex): require sqlite trajectory recorder
* test(sessions): align orphan recovery sqlite fixture
* test(sessions): align sqlite rebase fixtures
* fix(sessions): finish current-main integration of the sqlite flip
Resolve the whole-store SDK removal across its owner boundary: drop the
loadSessionStore re-export and the registry whole-store wrappers, wire
hasTrackedActiveSessionRun into gateway chat, complete the
preserveLockedHarnessIds cleanup contract, flip the codex thread-history
import to storePath targets, and port remaining main-side tests from
file-store helpers to session accessor reads.
* chore: drop committed pebbles log, revert plugin-inspector bump, refresh generated docs
Remove the 1.8k-line .pebbles/events.jsonl work log from the branch, restore
the plugin-inspector advisory lane to main's pinned 0.3.10 so the supply-chain
bump gets its own review, and regenerate docs_map, the plugin SDK API baseline,
and the export-surface ratchet for the merged tree.
* feat(sessions): keep archived transcripts by default with zstd cold storage
Codex-style retention: deleting or resetting a session archives its
transcript as a zstd-compressed JSONL artifact (plain when the runtime
lacks node:zlib zstd) and keeps it until the disk budget evicts oldest
first. resetArchiveRetention now governs both deleted and reset archives
and defaults to keep; maxDiskBytes defaults to 2gb so retention stays
bounded, with archives evicted before live sessions. The cron reaper
follows the same knob instead of deleting archives on its own timer.
* fix(state): converge agent DB migration lineages and bound database growth
Merge coherence: run both structure-gated legacy memory-schema repairs
(flip-lineage drop, main-lineage identity rebuild) before the flip
migration so pre-flip v1/v2 and pre-merge flip v1/v4 databases all
converge, and hoist foreign_keys=OFF outside the schema transaction
where the pragma was silently ignored and the v1 sessions rebuild
cascade-deleted session_entries.
Growth guards: fresh agent DBs enable auto_vacuum=INCREMENTAL, WAL
maintenance releases freed pages in bounded passes (never a blocking
full VACUUM), and doctor reports state/agent DB bloat from freelist
stats.
* fix(codex): resolve the store path for thread-history import via the SDK
The supervision catalog passed the legacy sessionFile locator to the
storePath-targeted transcript mirror; resolve the agent store path with
the session-store SDK helper instead of a runtime-object seam so test
fakes and headless callers need no extra surface. Drop the obsolete
missing-session-id preprocessing case: sessions rows are NOT NULL on
session_id and upsert repairs id-less patches at write time.
* fix(sessions): fail safe on malformed disk-budget config and doctor stat errors
A malformed explicit maxDiskBytes disables the budget instead of
falling back to the destructive 2gb default the user never chose, and
the doctor bloat check skips databases whose paths stat-fail instead of
aborting doctor.
* fix(sessions): complete sqlite conflict translations
* test(sqlite): align hardening checks with maintenance
* test(sessions): inspect compressed transcript archives
* fix(tests): await session seeds and drop unused helpers flagged by CI lint
The five unawaited writeSessionStoreSeed calls raced their SQLite seeds
against the assertions, failing compact shards; the bloat probe drops a
useless initializer and the merged tests drop now-unused helpers.
* test(sessions): type legacy proof events directly
* test(sessions): align hardening contracts
* perf(sessions): read usage transcript sizes from SQL aggregates
Usage/cost scans walked every session and materialized every transcript
event just to re-stringify it for a byte estimate — the #86718 stall
class reborn on the DB. readTranscriptStatsSync sums stored JSON bytes
in SQLite without loading a single row.
* fix(sessions): re-root foreign-root transcript paths onto the current sessions dir
Restored backups, moved OPENCLAW_STATE_DIR, and rehearsal copies carry
absolute sessionFile paths from the old root; the containment fallback
kept those foreign paths, so migration read (and would archive) files in
the original root and reported local copies missing. Re-root the
canonical agents/<id>/sessions suffix onto the current dir when the file
exists there; genuine cross-root layouts still fall through unchanged.
* test(agents): seed harness admission through sqlite
* fix(sqlite): close agent db on pragma setup failure
* fix(doctor): compact and retrofit incremental auto-vacuum after session import
The migration is the sanctioned offline window: post-import compact
reclaims import churn and applies auto_vacuum=INCREMENTAL to databases
created before the fresh-DB pragma existed, so runtime maintenance can
release pages in bounded passes on every install.
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-11 14:50:37 -07:00
Peter Steinberger
e34bff2276
refactor(plugin-sdk): collapse internal config-schema facade usage onto one module ( #104665 )
2026-07-11 13:00:53 -07:00
Peter Steinberger
8310c565e0
feat(onboarding): add provider sign-in ( #104502 )
...
* feat(onboarding): add provider sign-in flows
* fix(oauth): keep callback compatibility
* fix(onboarding): reconcile lost auth outcomes
* fix(onboarding): lock auth cancellation at commit
* fix(onboarding): close provider auth lifecycle gaps
* fix(onboarding): make terminal auth failures dismissable
* fix(onboarding): satisfy native app checks
* fix(onboarding): reconcile absent auth sessions
* fix(onboarding): bound provider auth sessions
* fix(onboarding): open provider auth links safely
* test(onboarding): use scanner-safe auth fixtures
* revert: keep established onboarding auth fixtures
* fix(onboarding): close provider auth cancellation gaps
* fix(gateway): retain uncollected wizard results
* fix(onboarding): bind provider reconciliation attempt
* fix(i18n): avoid guessing moved string identities
* style(onboarding): normalize remote auth choices efficiently
* fix(protocol): refresh optional provider auth choices
* test(gateway): cover provider auth dispatch order
* refactor(macos): split onboarding setup support
* fix(macos): refresh merged native checks
2026-07-11 13:00:17 -07:00
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
ba826be268
test(channels): delivery trace harness with feishu and mattermost goldens ( #104478 )
2026-07-11 06:49:27 -07:00
Peter Steinberger
fa77fe10d5
chore: migrate active GPT-5.5 references to GPT-5.6 ( #104452 )
...
* chore(models): migrate active GPT-5.5 references
* test(workboard): expect GPT-5.6 Sol default
* chore: keep release notes in PR body
* test(models): align picker fixtures with Sol default
* test: update PDF default model expectation
* test(qa): migrate thinking smoke to Luna
* test(gateway): align mock catalog with Sol default
* ci: retrigger exact-head PR checks
* test(gateway): document default catalog invariant
2026-07-11 06:30:57 -07:00
Vincent Koc
89bde4ea79
test(plugin-sdk): stabilize catalog timeout assertion
2026-07-11 21:29:40 +08:00
Peter Steinberger
3f33f0bb5f
refactor(qqbot): adopt core typing keepalive loop with budget accounting intact ( #104438 )
...
* refactor(channels): adopt core typing keepalive loop
* chore(plugin-sdk): pin surface budget for typing keepalive re-export
2026-07-11 05:48:33 -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
saju01
cbc84767bd
fix(exec-approval): stop misattributing Allow Always unavailability to policy ( #97740 )
...
* fix(exec-approval): stop misattributing Allow Always unavailability to policy
Allow Always is dropped both when policy ask=always AND when a command is
non-persistable (e.g. shell redirect `2>&1` -> one-shot), but the prompt always
claimed 'effective approval policy requires approval every time'. That's
misleading for the non-persistable case (#97069 ). Reword to reason-neutral
'Allow Always is unavailable for this command.' across all approval surfaces,
update en + 20 locale bundles, refresh i18n meta, and the matching tests.
Closes #97069
* fix(exec-approval): stop misattributing Allow Always unavailability to policy
* test(ui): await exec approval render updates
* chore(ui): sync approval i18n metadata
---------
Co-authored-by: saju01 <saju01@users.noreply.github.com >
Co-authored-by: openclaw-clownfish[bot] <280122609+openclaw-clownfish[bot]@users.noreply.github.com>
Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com >
2026-07-11 18:09:51 +08:00
Vincent Koc
1b3438d7ec
fix(plugin-runtime): keep local service config host-owned
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
Vincent Koc
c58690804f
feat(plugin-sdk): expose provider local service leases
2026-07-11 16:22:22 +08:00
Peter Steinberger
f94a7dc183
feat(codex): supervise native Codex sessions ( #104045 )
...
* feat(codex): add native session supervision
* fix(codex): harden supervision integration
* fix(codex): preserve locked harness ownership
* fix(codex): fence native session archive
* fix(codex): revalidate archive binding ownership
* feat(codex): integrate supervision runtime
* feat(sessions): preserve harness-owned execution
* feat(sessions): persist harness ownership invariants
* feat(gateway): enforce harness-owned sessions
* feat(setup): enable detected Codex supervision
* feat(mac): expose supervised Codex sessions
* feat(ui): make Codex sessions actionable
* docs(codex): document session supervision
* test(codex): cover integration ownership
* chore(i18n): refresh supervision inventories
* fix(setup): finalize Codex activation atomically
* test(codex): narrow binding store update
* fix(sessions): preserve legacy model locks
* test(macos): serialize Codex catalog fixtures
* fix(sessions): preserve legacy lock admission
* chore(i18n): reconcile supervision metadata
* test(sessions): mark legacy lock fixture
* fix(macos): drain final Codex catalog frame
* docs: leave supervision note to release
* style(macos): satisfy Codex catalog type length
* chore: record session accessor seam owners
* fix(macos): honor configured Codex supervision
* fix(codex): preserve harness-owned model locks
* fix(codex): satisfy supervision lint gates
* chore(i18n): refresh native supervision inventory
* fix(codex): align supervision validation contracts
* fix(codex): close supervision boundary gaps
* fix(codex): preserve supervision activation contracts
* fix(codex): dispose standalone supervision runtime
* fix(codex): pin supervised source connection
* fix(plugins): bind delegated runs to exact session target
* fix(codex): scope supervised sessions to configured agents
* fix(codex): fingerprint effective supervision home
* fix(codex): normalize supervision plugin policy
* fix(codex): keep supervised bindings stable across upgrades
* fix(codex): guard all supervised binding connections
* fix(codex): preserve catalog filters and pending CAS identity
* fix(codex): preserve supervision identity for diagnostics
* fix(codex): bind uncertain commits to supervision connection
* fix(codex): satisfy supervision type boundaries
* fix(macos): reconcile current main validation
* fix(codex): handle absent runtime config in supervision
* fix(doctor): own local audio acceleration check
* fix(codex): satisfy integration lint gates
* fix(codex): satisfy lifecycle safety guards
2026-07-11 00:12:08 -07:00
Peter Steinberger
1b3af45657
fix(gateway): admit reconnect delivery drains ( #104143 )
2026-07-10 22:33:33 -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
xingzhou
e009a41410
fix(agents): repair orphaned queued turns before assembly ( #90759 )
...
* fix(agent): keep orphaned user turns contextual
* test(agent): prove orphan repair targets active prompt
* fix(agent): repair orphaned user behind session metadata
* fix(agent): satisfy orphan repair CI types
* fix(agent): preserve orphan repair state entries
* fix(agent): filter repaired orphan from assembled history
* fix(embedded-agent): repair orphan session entry types
* fix(embedded-agent): remap replayed metadata labels
* fix(embedded-agent): skip dangling replay labels
* fix(agents): repair orphan history before assembly
---------
Co-authored-by: 张贵萍0668001030 <zhang.guiping@xydigit.com >
Co-authored-by: Ayaan Zaidi <hi@obviy.us >
2026-07-11 09:56:40 +05:30
Peter Steinberger
05ebaf41f6
fix(tool-call-repair): bound serialized stream normalization ( #104100 )
...
* fix(tool-call-repair): bound serialized stream normalization
Co-authored-by: wuqingxuan <wu.qingxuan@xydigit.com >
Co-authored-by: 徐闻涵0668001344 <xu.wenhan1@xydigit.com >
Co-authored-by: qingminlong <qing.minlong@xydigit.com >
Co-authored-by: WangYan <wang.yan29@xydigit.com >
* fix(tool-call-repair): preserve strict scan narrowing
* fix(tool-call-repair): lint serialized name validation
* fix(tool-call-repair): replay split suffix whitespace
* fix(tool-call-repair): cap complete-call whitespace
* test(tool-call-repair): assert bounded whitespace replay
---------
Co-authored-by: wuqingxuan <wu.qingxuan@xydigit.com >
Co-authored-by: 徐闻涵0668001344 <xu.wenhan1@xydigit.com >
Co-authored-by: qingminlong <qing.minlong@xydigit.com >
Co-authored-by: WangYan <wang.yan29@xydigit.com >
2026-07-10 20:00:11 -07:00
James Armstead
65cc86f45c
Refresh MCP OAuth auth-profile tokens ( #96120 )
...
* Refresh MCP OAuth auth-profile tokens
* Rotate Codex MCP binding on bearer changes
* Preserve agent scope for MCP auth profiles
* Preserve Codex MCP tool filters
* Keep Codex MCP projection helper local-only
* Fix Codex projection package boundary artifacts
* Revert "Fix Codex projection package boundary artifacts"
This reverts commit 13bcaed3da .
* Revert "Keep Codex MCP projection helper local-only"
This reverts commit 19751f4922 .
* Trigger CI rerun for OAuth MCP PR
* Fail closed for remote Codex MCP bearer projection
* Fix MCP OAuth bearer token projection
* fix: project MCP-native OAuth credentials
* fix: align MCP SDK surface budget
* fix(mcp): keep agents available before OAuth login
---------
Co-authored-by: Josh Lehman <josh@martian.engineering >
2026-07-10 17:49:43 -07: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
9b1c36d23c
fix: prevent exec approval revocation races ( #103515 )
...
* fix(security): serialize exec approval mutations
* fix(security): preserve additive approval writes
* test(cli): expect normalized approval shape
* fix(security): preserve exec approval compatibility
* test(security): exercise locked approval initialization
* test(security): mock serialized approval helpers
* test(exec): derive enforced command path from plan
* fix(gateway): always return approval CAS conflicts
* fix(macos): serialize exec approvals writes
* fix(security): repair approval build errors
* fix(security): serialize exec approval mutations
* fix(security): fail closed on approval persistence errors
* test(security): cover detached approval persistence failures
* fix(security): harden exec approval state
* style(macos): format exec approval sources
* fix(security): complete exec approval hardening
Co-authored-by: Coy Geek <65363919+coygeek@users.noreply.github.com >
* fix(macos): preserve approved login-shell semantics
* fix(macos): keep login shell approvals one-shot
* fix(security): linearize exec authorization
Co-authored-by: Coy Geek <65363919+coygeek@users.noreply.github.com >
* fix(security): preserve durable approval basis
Co-authored-by: Coy Geek <65363919+coygeek@users.noreply.github.com >
* fix(security): bind exec grants to current policy
Co-authored-by: Coy Geek <65363919+coygeek@users.noreply.github.com >
* test(security): fix exec revocation fixtures
* test(security): align gateway approval fixtures
* fix(macos): return approval decisions
* chore(i18n): sync native approval strings
* test(security): align approval hardening fixtures
* test(node): authorize completed event fixture
* test(security): fix approval decision fixtures
* test(security): await durable approval visibility
* fix(exec): preserve concurrent approval grants
* fix(exec): address exact-head CI failures
* fix(exec): preserve concurrent approval promotions
* fix(exec): make Swift shutdown state explicit
* test(macos): handle approval read failures
* fix(macos): harden approval socket paths
* fix(macos): preserve exact shell payload bytes
* test(macos): make approval fixtures explicit
* test(macos): fix approval suite compilation
* fix(macos): bound approval socket JSONL reads
* chore: move exec approval note to release process
* chore: move exec approval note to release process
---------
Co-authored-by: Coy Geek <65363919+coygeek@users.noreply.github.com >
2026-07-10 21:35:05 +01:00
Peter Steinberger
1bcc4c5e70
feat(gateway): add cooperative host suspension ( #103618 )
...
* feat(gateway): add cooperative suspension preparation
* style: satisfy suspension lint checks
* test(gateway): reset work admission between shared suites
* fix(gateway): reject upgrades during suspension
* fix(gateway): preserve admitted work during suspension
* test(gateway): isolate suspension and restart state
* fix(gateway): close suspension false-ready gaps
* refactor(protocol): slim suspension declaration graph
* refactor(plugin-sdk): sever protocol registry edges
* fix(gateway): preserve admitted restart follow-ups
* fix(gateway): make suspension recovery fail closed
* fix(protocol): keep validation formatter re-export only
* test(gateway): simplify deferred fixture type
* style(gateway): clarify suspension entry name
* fix(gateway): retain detached work admission
2026-07-10 20:24:53 +01:00
Peter Steinberger
e1934d968e
fix(nodes): stop advertising a disabled browser proxy ( #103894 )
...
* fix(nodes): hide disabled browser proxy capability
* chore: defer node fix changelog to release
* chore: ratchet plugin SDK surface budget
2026-07-10 20:06:53 +01:00
Peter Steinberger
9b4c7c0991
test(openai): align auth contract with provider default ( #103760 )
2026-07-10 16:28:07 +01:00
JC
59e95fe3fd
feat: support GPT-5.6 Ultra across OpenClaw and Codex runtimes ( #98021 )
...
* feat: support GPT-5.6 Ultra across agent runtimes
Co-authored-by: J Cai <anyech@gmail.com >
* fix: keep harness projections discovery-free
* fix(codex): mirror V2 native subagent tasks
* chore: refresh plugin SDK surface budgets
* test: expose Ultra wire effort proof
* test(cron): avoid hoisted mock initialization race
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-10 15:23:24 +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
505f8ae6a3
fix(control-ui): harden workspace avatar projection ( #103657 )
...
* fix(control-ui): harden workspace avatar projection
Co-authored-by: LZY3538 <liu.zhenye@xydigit.com >
* refactor(gateway): remove dead avatar URL mapper
* test(control-ui): track avatar temp directories
---------
Co-authored-by: LZY3538 <liu.zhenye@xydigit.com >
2026-07-10 13:31:22 +01:00
Peter Steinberger
2c909212f1
fix(tool-call-repair): preserve stream content order after repair ( #103585 )
...
Keep byte-over-cap visible suffixes at their streamed content indexes when terminal message snapshots are normalized.
Co-authored-by: ZOOWH <ZOOWH@users.noreply.github.com >
2026-07-10 10:16:09 +01:00
wuqxuan
9e74dabad2
fix: parse zero-argument XML tool calls ( #103220 )
...
* fix: parse zero-argument XML tool calls
* fix(tool-call-repair): handle empty XML calls safely
---------
Co-authored-by: Peter Steinberger <peter@steipete.me >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-10 07:39:23 +01:00
Pavan Kumar Gondhi
c70f3d0dae
fix: block unspecified trusted DNS targets ( #103075 )
2026-07-10 11:16:26 +05:30
Peter Steinberger
75dfd3dc09
feat(xai): support Grok Imagine Video 1.5 ( #103316 )
...
* feat(media): add per-model generation catalog metadata
* feat(xai): support Grok Imagine Video 1.5
* test(plugin-sdk): update public surface budget
2026-07-10 04:49:42 +01:00
Peter Steinberger
add2c586c2
feat(slack): support native chart presentations ( #102635 )
2026-07-10 04:05:23 +01:00
qingminlong
2fd0f88f62
fix: ignore invalid Retry-After HTTP dates ( #102987 )
...
* fix: ignore invalid Retry-After HTTP dates
* fix(ai): centralize strict Retry-After dates
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
Co-authored-by: Peter Steinberger <peter@steipete.me >
2026-07-10 04:02:44 +01:00
Ayaan Zaidi
04ff278a1d
refactor(device-bootstrap): close bootstrap purpose type
2026-07-10 07:53:37 +05:30
Ayaan Zaidi
c64db7c9c7
feat(plugin-sdk): export dashboard bootstrap helpers
2026-07-10 07:53:37 +05:30
Peter Steinberger
8b300e57f0
fix(browser): keep remote CDP credentials out of responses ( #103139 )
...
* fix(browser): contain remote CDP credentials
* fix(browser): probe authenticated discovery before attach
* chore: keep release note in PR metadata
2026-07-10 01:12:51 +01:00
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
Oliver Mee
ae11ea5ba9
feat(qwen): add Token Plan (Team Edition) provider ( #94419 )
...
* feat(qwen): add Token Plan provider
Co-authored-by: Oliver Mee <102673257+Omee11@users.noreply.github.com >
* docs: regenerate documentation map
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
Co-authored-by: Oliver Mee <102673257+Omee11@users.noreply.github.com >
2026-07-09 22:07:01 +01:00
Peter Steinberger
5ef269c2bb
fix: keep bounded Unicode text valid across UTF-16 boundaries ( #102823 )
...
* fix(text): keep bounded output UTF-16 safe
Co-authored-by: 黄剑雄0668001315 <huang.jianxiong@xydigit.com >
Co-authored-by: 0668000539 <shu.zongyu@xydigit.com >
Co-authored-by: 张鹊平0668001085 <zhang.queping@xydigit.com >
Co-authored-by: 赵旺0668001248 <zhao.wang1@xydigit.com >
Co-authored-by: 陈宪彪0668000387 <chen.xianbiao@xydigit.com >
Co-authored-by: lizeyu-xydt <li.zeyu@xydigit.com >
* chore(changelog): defer release note to automation
* refactor(qa-lab): keep text helper behind SDK
---------
Co-authored-by: 黄剑雄0668001315 <huang.jianxiong@xydigit.com >
Co-authored-by: 0668000539 <shu.zongyu@xydigit.com >
Co-authored-by: 张鹊平0668001085 <zhang.queping@xydigit.com >
Co-authored-by: 赵旺0668001248 <zhao.wang1@xydigit.com >
Co-authored-by: 陈宪彪0668000387 <chen.xianbiao@xydigit.com >
Co-authored-by: lizeyu-xydt <li.zeyu@xydigit.com >
2026-07-09 15:21:23 +01:00