NianJiu
199a1b9014
fix(webchat): fetch full sidebar content for truncated history
...
Add a bounded `chat.message.get` gateway method so Control UI can fetch one display-normalized transcript message by id when an assistant history preview was truncated. Keep `chat.history` lightweight, reject oversized/hidden/missing rows with explicit unavailable reasons, and wire the WebChat side reader to request full content only for visible truncated assistant messages.
Also refresh the generated Swift gateway protocol models and document the new assistant-message side-reader behavior.
Closes #84651 .
Related #53242 .
Co-authored-by: NianJiuZst <3235467914@qq.com >
2026-05-31 01:33:52 +01:00
Peter Steinberger
4c33aaa86c
refactor: unify OpenAI provider identity ( #88451 )
...
* refactor: unify OpenAI provider identity
* refactor: move legacy oauth sidecar doctor helpers
* test: align OpenAI fixtures after rebase
* test: clean OpenAI provider unification
* fix: finish OpenAI provider cleanup
* fix: finish OpenAI cleanup follow-through
* fix: finish OpenAI CI cleanup
2026-05-31 00:29:44 +01:00
Shakker
515d4ffc21
fix: refresh skill workshop CI expectations
2026-05-30 20:04:52 +01:00
Shakker
77c6bee421
fix: refresh skill workshop generated surfaces
2026-05-30 20:04:52 +01:00
Nimrod Gutman
b352cb2d8e
fix(ios): guard websocket ping continuation ( #88231 )
...
Merged via squash.
Prepared head SHA: b4cee97b8a
Co-authored-by: ngutman <1540134+ngutman@users.noreply.github.com >
Co-authored-by: ngutman <1540134+ngutman@users.noreply.github.com >
Reviewed-by: @ngutman
2026-05-30 07:56:34 +03:00
Peter Steinberger
260e8e26fd
fix(ci): repair main checks
2026-05-30 00:02:24 +02:00
Dallin Romney
1dbde826f2
fix ci mainline checks ( #88137 )
2026-05-29 14:41:30 -07:00
Peter Steinberger
a509c48f0e
feat: add core session goals ( #87469 )
...
* feat: add core session goals
* feat: polish session goals in tui
* fix: resolve goal tool session stores
* fix: keep get goal read-only
* fix: migrate legacy goal session slots
* fix: persist goal token accounting
* fix: validate goal session rows
* refactor: remove unshipped goal legacy handling
* fix: handle goal commands in local tui
* fix: satisfy goal tool display checks
* fix: reset goal budget on overdue resume
* feat: surface session goals across control surfaces
* test: update gateway protocol test import
* test: align goal fixture types with protocol
* fix: scope selected global transcript usage fallback
* fix: scope selected global web subscriptions
* fix: preserve selected global agent during chat dispatch
* fix: scope chat inject to selected global agents
2026-05-29 22:36:29 +02:00
joshavant
47c578034a
fix(exec): align release validation surfaces
...
Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com >
Co-authored-by: jesse-merhi <79823012+jesse-merhi@users.noreply.github.com >
2026-05-30 00:04:06 +10:00
Alix-007
99bd275359
fix(ui): scope usage by agent filter
...
Fixes #87132 .
Default Usage now requests all configured agents with `agentScope: "all"`, while selecting a specific agent sends `agentId` consistently to both session usage and cost usage calls. The gateway now supports explicit all-agent session usage, aggregates all-agent cost summaries across configured agents, and keeps scoped cache entries separate. Legacy gateway fallbacks remain for older `agentId` / `agentScope` support, with protocol docs/schema and Swift generated models updated.
Verification:
- `node scripts/run-vitest.mjs ui/src/ui/controllers/usage.node.test.ts ui/src/ui/app-render-usage-tab.test.ts ui/src/ui/views/usage.test.ts --reporter=dot`
- `node scripts/run-vitest.mjs run --config test/vitest/vitest.gateway-methods.config.ts src/gateway/server-methods/usage.test.ts src/gateway/server-methods/usage.cost-usage-cache.test.ts src/gateway/server-methods/usage.sessions-usage.test.ts --reporter=dot`
- `pnpm check:test-types`
- `pnpm protocol:check`
- targeted `node scripts/run-oxlint.mjs ...`
- `git diff --check`
- autoreview clean after Swift compatibility fix
- PR CI green at head `d67156a3c552c4f9c8b6edf8516b6242bf5cdd26`
Co-authored-by: Alix-007 <267018309+Alix-007@users.noreply.github.com >
2026-05-29 02:03:33 +01:00
Alix-007
ff21b4e731
fix(cron): complete jobs filters
...
Server-side cron job list filtering now applies schedule-kind and last-run-status filters before pagination, and the UI only sends table filters for the cron table view.
Fixes #9455 .
Co-authored-by: Alix-007 <267018309+Alix-007@users.noreply.github.com >
2026-05-28 23:18:31 +01:00
Colin Johnson
f6e51ff99a
feat(ios): refresh pro UI and gateway flows ( #87367 )
...
Summary:
- Replace the legacy iOS shell with Pro Command, Chat, Agents, and Settings tabs.
- Wire iOS chat/session/settings/diagnostics and realtime Talk flows through gateway-backed APIs.
- Add gateway/session and shared chat coverage for the new iOS flow.
Verification:
- git diff --check
- node scripts/run-vitest.mjs src/gateway/server.sessions.create.test.ts src/gateway/talk-realtime-relay.test.ts
- swift test --filter ChatViewModelTests (apps/shared/OpenClawKit)
- xcodebuild build for Nimrod's iPhone succeeded; install succeeded; launch was blocked because the phone was locked
Known follow-up:
- Preserve traceLevel in sessions.create parent runtime inheritance and keep the changelog credit in the follow-up patch.
2026-05-28 17:23:26 +03:00
Mariano
7299c56953
Fix sub-agent cwd/workspace separation ( #87218 )
...
Merged via squash.
Prepared head SHA: f47b073830
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com >
Reviewed-by: @mbelinky
2026-05-27 23:55:24 +02:00
Kevin Lin
bb752c2b47
Revert "feat: expose plugin approval action metadata" ( #87419 )
...
This reverts commit 0c867eef75 .
# Conflicts:
# docs/.generated/plugin-sdk-api-baseline.sha256
2026-05-27 14:48:06 -07:00
Patrick Erichsen
ee57f341f0
Add ClawHub skill verification and trust surfaces ( #86699 )
...
* feat(skills): fetch ClawHub skill verification
* feat(skills): resolve ClawHub verification targets
* feat(skills): add ClawHub verify command
* docs(skills): document ClawHub verification
* test(skills): type verify CLI fixture
* fix(skills): fetch verified skill card URL
* fix(skills): bound verified card downloads
* fix(skills): fail closed on malformed verification
* fix(skills): corroborate ClawHub install origins
* feat(skills): surface ClawHub trust in control UI
* chore(protocol): refresh generated gateway models
* chore(ui): refresh i18n raw copy baseline
* docs: clarify skills verify wording
* fix: fail closed on skill trust mismatches
* fix: reject incomplete clawhub provenance
* fix: satisfy trust verdict lint
* fix: restore ci checks after main merge
2026-05-27 14:23:24 -05:00
Peter Steinberger
1507a9701b
refactor: centralize inbound supplemental context
...
* refactor: centralize inbound supplemental context
* refactor: trim supplemental finalizer typing
* docs: clarify supplemental context projection
* refactor: move inbound finalization into core
* refactor: simplify channel inbound facts
* refactor: fold supplemental media into inbound finalizer
* refactor: migrate channel inbound callers to builder
* docs: mark inbound finalizer compat types deprecated
* refactor: wire runtime turn context builder
* refactor: replace channel turn runtime API
* fix: respect discord quote visibility
* fix: avoid deprecated line dispatch helper
* refactor: deprecate channel message SDK seams
* docs: trim channel outbound SDK page
* test: migrate irc inbound assertion
* refactor: deprecate outbound SDK facades
* refactor: deprecate channel helper SDK facades
* refactor: deprecate channel streaming SDK facade
* refactor: move direct dm helpers into inbound SDK
* chore: mark legacy test-utils SDK alias deprecated
* refactor: remove unused allow-from read helper
* refactor: route remaining channel dispatch through core
* refactor: enforce modern extension SDK imports
* test: give slow image root tests more time
* ci: support node fallback on windows
* fix: add transcripts tool display metadata
* refactor: trim legacy channel test seams
* fix: preserve channel compat after rebase
* fix: keep deprecated channel inbound aliases
* fix: preserve discord thread context visibility
* fix: clean final rebase conflicts
* fix: preserve channel message dispatch aliases
* fix: sync channel refactor after rebase
* fix: sync channel refactor after latest main
* fix: dedupe memory-core subagent mock
* test: align clickclack inbound dispatch assertions
* fix: sync plugin sdk api hash after rebase
* fix: sync channel refactor after latest main
* fix: sync plugin sdk api hash after rebase
* fix: sync plugin sdk api hash after latest main
* test: remove stale inbound context awaits
2026-05-27 09:26:06 +01:00
Yoshikazu Terashi
3104f36329
fix(cron): surface classified run failure causes
...
Surface classified cron failure causes without changing raw cron JSON error text.
- add additive CLI `cause` output for finished run entries with `errorReason`
- persist/backfill full `FailoverReason` values on cron run-log entries
- thread provider context through cron finalization so provider-specific failure causes stay accurate
- extend protocol/Swift models and regression coverage for CLI JSON, run-log parsing/search, alerts, and protocol conformance
Verification:
- `pnpm lint --threads=8`
- `pnpm protocol:check`
- `pnpm exec oxfmt --check src/cli/cron-cli/shared.ts src/cli/cron-cli/shared.cause-display.test.ts src/cron/run-log.ts src/cron/run-log.error-reason.test.ts src/cron/cron-protocol-conformance.test.ts src/cron/service.failure-alert.test.ts src/cron/service/timer.ts src/cron/service/ops.ts src/gateway/protocol/schema/cron.ts scripts/protocol-gen-swift.ts`
- `git diff --check`
- AWS Crabbox `cbx_8a6a65ab83b0` / `run_42b73a4a9750`: 4 files, 20 tests passed
- autoreview clean, no accepted/actionable findings
- GitHub CI/CodeQL/OpenGrep/Workflow Sanity green/skipped/neutral on `aa29b087b2587d0aed3d409de5e7a2c706c32cdf`
Co-authored-by: Yoshikazu Terashi <yterashi@peperon-works.jp >
2026-05-27 09:03:17 +01:00
Pablo Guardiola
0c867eef75
feat: expose plugin approval action metadata
...
Expose plugin approval action metadata so plugins can describe richer approval actions across gateway, SDK, channel, and UI surfaces.
2026-05-26 22:46:09 -07:00
Peter Steinberger
f7e2d9bb47
ci(release): port 2026.5.25 release gate fixes
2026-05-26 21:19:51 +01:00
Peter Steinberger
ad71c427fa
chore: update tool display snapshot
2026-05-26 16:17:51 -04:00
Shakker
0f49bbbeb2
fix: dedupe transcripts tool display metadata
2026-05-26 21:09:18 +01:00
Vincent Koc
9b1b6d02fd
fix(agents): restore current guard checks ( #86934 )
2026-05-26 20:59:03 +01:00
Peter Steinberger
645cbf6c33
fix: add transcripts tool display metadata
2026-05-26 17:28:23 +01:00
Nimrod Gutman
9ca52ce3d9
[codex] improve iOS realtime talk mode ( #86355 )
...
Merged via squash.
Prepared head SHA: 3f5aedb265
Co-authored-by: ngutman <1540134+ngutman@users.noreply.github.com >
Co-authored-by: ngutman <1540134+ngutman@users.noreply.github.com >
Reviewed-by: @ngutman
2026-05-25 13:27:37 +03:00
Peter Steinberger
bbf9c45ba7
feat(talk): add realtime active-run control
...
Co-authored-by: Colin <colin@solvely.net >
2026-05-24 02:35:04 +01:00
njuboy
a1eb765f0a
fix(session-lock): enforce maxHoldMs in shouldReclaim during lock acquisition ( #85764 )
...
* fix(session-lock): enforce maxHoldMs in shouldReclaim during lock acquisition
- Adds optional maxHoldMs parameter to inspectLockPayload
- Inspect now marks locks as stale when held longer than maxHoldMs
- Passes maxHoldMs through inspectLockPayloadForSession
- acquireSessionWriteLock's shouldReclaim callback now passes maxHoldMs
This ensures that when a live process holds a lock for longer than
maxHoldMs (default 5min), other processes can reclaim it during
acquisition — matching the watchdog's existing enforcement.
Previously shouldReclaim only used staleMs (30min default), meaning
a lock held for 10+ minutes by a live PID would never be reclaimable,
causing 60s timeout failures and gateway freezes.
Closes #85762
* fix(session-lock): add dead-PID fast-path before retry loop
Adds a fast-path check at the top of acquireSessionWriteLock:
if the lock file's owner PID is dead, remove it immediately
before entering the retry loop. This saves up to timeoutMs (60s)
of futile waiting when the previous lock holder has died.
The shouldReclaim callback already handles this case, but only
iteratively through the retry loop. The fast-path eliminates
that unnecessary delay.
* fix(session-lock): enforce max hold during acquisition
* fix(session-lock): revalidate max hold safely
* fix(session-lock): honor holder max-hold policy
* fix(session-lock): keep cleanup from reclaiming live holders
* fix(session-lock): remove stale locks only when unchanged
* fix(session-lock): skip self-held max-hold reclaim
* fix(ci): refresh gateway protocol checks
---------
Co-authored-by: njuboy11 <njuboy11@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-05-24 00:38:01 +01:00
brokemac79
f4b92f5e6c
fix(agents): simplify subagent completion handoff
...
Simplify native subagent completion handoff and remove manual subagent control surfaces.
Co-authored-by: brokemac79 <martin_cleary@yahoo.co.uk >
2026-05-23 13:50:08 +01:00
Alex Knight
5d01be1070
Add chat picker search and pagination
2026-05-22 19:07:21 +10:00
Nimrod Gutman
94d8391c03
[codex] restore QR bootstrap operator handoff ( #83684 )
...
Merged via squash.
Prepared head SHA: 2dc955cfb7
Co-authored-by: ngutman <1540134+ngutman@users.noreply.github.com >
Co-authored-by: ngutman <1540134+ngutman@users.noreply.github.com >
Reviewed-by: @ngutman
2026-05-19 20:59:09 +03:00
LLagoon3
35cd2af159
Expose reload kind in config schema lookup ( #81612 )
...
Merged via squash.
Prepared head SHA: 9517cfa718
Co-authored-by: LLagoon3 <115124830+LLagoon3@users.noreply.github.com >
Co-authored-by: altaywtf <9790196+altaywtf@users.noreply.github.com >
Reviewed-by: @altaywtf
2026-05-18 16:39:12 +03:00
Peter Steinberger
9616aa6e5a
build(protocol): refresh gateway secrets models
2026-05-17 10:42:57 +01:00
Peter Steinberger
ad155fbbd7
fix(gateway): restore v4 message action protocol
2026-05-17 06:35:39 +01:00
Peter Steinberger
9e67f53b91
fix(cli): resolve web command SecretRefs
...
Fix CLI web search/fetch command SecretRef resolution for provider-scoped plugin credentials.
- Carry command provider overrides through gateway and local secret resolution.
- Mark the selected web provider targets active and unrelated plugin refs inactive.
- Cover Tavily, DuckDuckGo, legacy Firecrawl fetch, protocol overrides, and runtime command-secret behavior.
- Add public plugin-sdk test mock exports needed by existing plugin tests after CI boundary enforcement.
Fixes #82621 .
Replacement for #82699 .
Co-authored-by: 吴杨帆 <39647285+leno23@users.noreply.github.com >
2026-05-17 03:00:39 +01:00
Peter Steinberger
07f05e972e
refactor: move inbound event classification into core
2026-05-17 00:10:29 +01:00
Peter Steinberger
5b383af736
feat: add native mac dashboard window
2026-05-16 23:49:18 +01:00
Pavan Kumar Gondhi
6a12c6f799
fix(gateway): scope session data lookups by agent [AI] ( #81386 )
...
* fix: scope gateway session lookups by agent
* addressing review-skill
* addressing review-skill
* addressing review-skill
* addressing review-skill
* addressing codex review
* addressing codex review
* addressing codex review
* addressing codex review
* addressing codex review
* addressing review-skill
* addressing review-skill
* addressing review-skill
* addressing review-skill
* addressing codex review
* addressing codex review
* addressing codex review
* addressing codex review
* addressing codex review
* addressing codex review
* addressing codex review
* addressing ci
* addressing ci
* fix: complete root-cause handling
* addressing review-skill
* addressing codex review
* addressing codex review
* addressing codex review
* addressing codex review
* addressing codex review
* Fix Swift protocol optional initializer defaults
* Stabilize node command lookup in approval test
* Fix browser proxy approval test node lookup
* Trim unrelated changes from issue 642 fix
* Remove unrelated formatting churn from issue 642 fix
* Fix Swift protocol generator lint
* docs: add changelog entry for PR merge
2026-05-16 22:31:02 +05:30
Peter Steinberger
e71d10fd4d
fix(webchat): show manual compaction progress
...
Add first-class session.operation start/end events for manual compaction and render the existing WebChat compaction indicator from those events.
Co-authored-by: Conan Scott <271909525+Conan-Scott@users.noreply.github.com >
2026-05-16 13:58:44 +01:00
Brad
372a8e4d22
Add wait mode for manual cron runs ( #81929 )
...
Adds wait mode for manual cron runs, exact run-id lookup for cron run logs, protocol/Swift schema support, and docs/changelog coverage.
2026-05-15 20:17:48 -07:00
Peter Steinberger
a6dd9fdf08
fix(cron): separate failure notification delivery
2026-05-15 21:51:25 +01:00
Peter Steinberger
2e5a86adfe
fix: finish room event gating
2026-05-15 21:47:46 +01:00
Peter Steinberger
c6ddb1afb7
fix: preserve media completion message-tool delivery ( #82206 )
...
* fix: preserve message-tool media completion delivery
* chore: update generated protocol models
2026-05-15 16:49:52 +01:00
Val Alexander
5f89cabeb5
fix(macos): harden screen.snapshot validation and payload bounds
...
Fixes #68181 .
Rejects malformed macOS screen.snapshot params before capture, sanitizes capture failures, and bounds inline base64 snapshot responses against the projected node.invoke.result frame size.
Supersedes #68186 .
2026-05-15 02:27:33 -05:00
javierdici
f6c00456dc
Render provider errors in chat history ( #65689 )
...
Merged via squash.
Prepared head SHA: a777c7506e
Co-authored-by: javierdici <131621115+javierdici@users.noreply.github.com >
Co-authored-by: altaywtf <9790196+altaywtf@users.noreply.github.com >
Reviewed-by: @altaywtf
2026-05-15 00:48:41 +03:00
Val Alexander
6db2ee6583
fix(ios): restore privacy permission prompts
...
Restores first-use iOS authorization prompts for Contacts, Calendar, and Reminders by adding the missing usage descriptions, requesting access from `.notDetermined` in the service paths, and adding Settings Privacy & Access status/actions.
Verification:
- `plutil -lint apps/ios/Sources/Info.plist apps/ios/Tests/Info.plist apps/ios/ShareExtension/Info.plist apps/ios/ActivityWidget/Info.plist apps/ios/WatchApp/Info.plist apps/ios/WatchExtension/Info.plist`
- `swiftformat --lint apps/ios/Sources/Permissions/PermissionRequestBridge.swift apps/ios/Sources/Contacts/ContactsService.swift apps/ios/Sources/Calendar/CalendarService.swift apps/ios/Sources/Reminders/RemindersService.swift apps/ios/Sources/Settings/PrivacyAccessSectionView.swift apps/ios/Sources/Settings/SettingsTab.swift apps/ios/Sources/Onboarding/GatewayOnboardingView.swift apps/shared/OpenClawKit/Sources/OpenClawKit/DeepLinks.swift --config config/swiftformat`
- `swiftlint lint --config apps/ios/.swiftlint.yml apps/ios/Sources/Permissions/PermissionRequestBridge.swift apps/ios/Sources/Contacts/ContactsService.swift apps/ios/Sources/Calendar/CalendarService.swift apps/ios/Sources/Reminders/RemindersService.swift apps/ios/Sources/Settings/PrivacyAccessSectionView.swift apps/ios/Sources/Settings/SettingsTab.swift apps/ios/Sources/Onboarding/GatewayOnboardingView.swift apps/ios/Tests/PermissionRequestBridgeTests.swift`
- `git diff --check origin/main...HEAD`
- `rg '<<<<<<<|=======|>>>>>>>' CHANGELOG.md apps/ios apps/shared/OpenClawKit/Sources/OpenClawKit/DeepLinks.swift`
- `pnpm ios:build`
- `xcodebuild test -project apps/ios/OpenClaw.xcodeproj -scheme OpenClaw -destination 'platform=iOS Simulator,name=iPhone 17' -configuration Debug -only-testing:OpenClawTests/PermissionRequestBridgeTests`
- Fresh-erased iPhone 17 simulator proof for Contacts denial/Open Settings, Calendar add-only/full-access upgrade, and Reminders authorization prompts.
Not tested: physical device, or a paired gateway command invocation after onboarding.
2026-05-13 23:45:35 -05:00
Val Alexander
faa443a452
fix(chat/ios): downscale image attachments before send
...
Resize iOS chat PhotosPicker image attachments through the shared JPEG transcoder before staging/sending. Cap long edge and payload bytes, strip source metadata, preserve previews from processed data, and add focused processor/view-model regression tests.\n\nFixes #68524.\nSupersedes #73710 .
2026-05-13 21:44:05 -05:00
Val Alexander
6a41a54212
fix(macos): harden direct gateway TLS pinning
...
Summary:
- Require macOS system trust before saving and accepting first-use direct `wss://` gateway TLS pins.
- Honor `gateway.remote.tlsFingerprint` in macOS direct node-mode TLS params.
- Add focused Swift coverage and update remote gateway docs/changelog.
Verification:
- Local: swiftformat --lint on touched Swift files.
- Local: git diff --check HEAD~1..HEAD.
- Local: swift test --package-path apps/shared/OpenClawKit --filter GatewayTLSPinningTests.
- Local: swift test --package-path apps/macos --filter 'MacNodeModeCoordinatorTests|GatewayEndpointStoreTests'.
- Local: PATH=/Users/buns/.nvm/versions/node/v24.13.0/bin:$PATH pnpm docs:list.
- CI: macos-node, macos-swift, check-docs, security-fast, security-scm-fast, security-dependency-audit, Opengrep OSS, and changed-path checks passed on PR head cf383fc047 .
Fixes #50642 .
Supersedes #50643 .
2026-05-13 21:30:22 -05:00
Peter Steinberger
150bebcd0c
fix(gateway): require v4 chat deltas
2026-05-13 16:06:37 +01:00
samzong
63724ddcfd
fix(sdk): preserve replayed chat snapshots
2026-05-13 16:06:37 +01:00
Pavan Kumar Gondhi
418d7afb33
gateway: pass Talk session scope to resolver [AI] ( #81379 )
...
* fix: pass talk session visibility scope
* addressing review-skill
* addressing review-skill
* addressing codex review
* addressing codex review
* addressing codex review
* addressing codex review
* addressing codex review
* addressing codex review
* addressing claude review
* addressing ci
* docs: add changelog entry for PR merge
2026-05-13 20:09:03 +05:30
Peter Steinberger
694ca50e97
Revert "refactor: move runtime state to SQLite"
...
This reverts commit f91de52f0d .
2026-05-13 13:33:38 +01:00