Skip to content

Sync/upstream 2026 03 12#105

Merged
linfangw merged 195 commits into
mainfrom
sync/upstream-2026-03-12
Mar 12, 2026
Merged

Sync/upstream 2026 03 12#105
linfangw merged 195 commits into
mainfrom
sync/upstream-2026-03-12

Conversation

@linfangw

Copy link
Copy Markdown
Member

No description provided.

ayanesakura and others added 30 commits March 9, 2026 22:26
…t shim (openclaw#40623)

Verified:
- pnpm build
- pnpm check
- pnpm test:macmini

Co-authored-by: ayanesakura <40628300+ayanesakura@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
Merged via squash.

Prepared head SHA: b1fcfba
Co-authored-by: benjipeng <11394934+benjipeng@users.noreply.github.com>
Co-authored-by: BunsDev <68980965+BunsDev@users.noreply.github.com>
Reviewed-by: @BunsDev
Merged via squash.

Prepared head SHA: a0b9a02
Co-authored-by: frankekn <4488090+frankekn@users.noreply.github.com>
Co-authored-by: frankekn <4488090+frankekn@users.noreply.github.com>
Reviewed-by: @frankekn
…openclaw#41662)

Merged via squash.

Prepared head SHA: 2780e62
Co-authored-by: hougangdev <105773686+hougangdev@users.noreply.github.com>
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com>
Reviewed-by: @obviyus
Merged via squash.

Prepared head SHA: baa6b5d
Co-authored-by: futuremind2026 <258860756+futuremind2026@users.noreply.github.com>
Co-authored-by: BunsDev <68980965+BunsDev@users.noreply.github.com>
Reviewed-by: @BunsDev
… annotations (openclaw#40881)

Merged via squash.

Prepared head SHA: 66c8bb2
Co-authored-by: laurieluo <89195476+laurieluo@users.noreply.github.com>
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com>
Reviewed-by: @obviyus
…dary marker variants (openclaw#35983)

Merged via squash.

Prepared head SHA: ff07dc4
Co-authored-by: urianpaul94 <33277984+urianpaul94@users.noreply.github.com>
Co-authored-by: frankekn <4488090+frankekn@users.noreply.github.com>
Reviewed-by: @frankekn
…penclaw#40740)

Merged via squash.

Prepared head SHA: a4456d4
Co-authored-by: sircrumpet <4436535+sircrumpet@users.noreply.github.com>
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com>
Reviewed-by: @obviyus
Merged via squash.

Prepared head SHA: 0a8ebf8
Co-authored-by: frankekn <4488090+frankekn@users.noreply.github.com>
Co-authored-by: frankekn <4488090+frankekn@users.noreply.github.com>
Reviewed-by: @frankekn
Merged via squash.

Prepared head SHA: 8abc6c1
Co-authored-by: BunsDev <68980965+BunsDev@users.noreply.github.com>
Co-authored-by: BunsDev <68980965+BunsDev@users.noreply.github.com>
Reviewed-by: @BunsDev
…penclaw#14967)

Merged via squash.

Prepared head SHA: 1bb49b2
Co-authored-by: rixau <112558420+rixau@users.noreply.github.com>
Co-authored-by: BunsDev <68980965+BunsDev@users.noreply.github.com>
Reviewed-by: @BunsDev
…ess is ro (openclaw#40757)

Merged via squash.

Prepared head SHA: 0e8b27b
Co-authored-by: dsantoreis <66363641+dsantoreis@users.noreply.github.com>
Co-authored-by: mcaxtr <7562095+mcaxtr@users.noreply.github.com>
Reviewed-by: @mcaxtr
…claw#41176)

Merged via squash.

Prepared head SHA: 33cac4c
Co-authored-by: hnykda <2741256+hnykda@users.noreply.github.com>
Co-authored-by: mukhtharcm <56378562+mukhtharcm@users.noreply.github.com>
Reviewed-by: @mukhtharcm
… Framework compatibility (openclaw#41838)

* fix(msteams): use General channel conversation ID as team key for Bot Framework compatibility

Bot Framework sends `activity.channelData.team.id` as the General channel's
conversation ID (e.g. `19:abc@thread.tacv2`), not the Graph API group GUID
(e.g. `fa101332-cf00-431b-b0ea-f701a85fde81`). The startup resolver was
storing the Graph GUID as the team config key, so runtime matching always
failed and every channel message was silently dropped.

Fix: always call `listChannelsForTeam` during resolution to find the General
channel, then use its conversation ID as the stored `teamId`. When a specific
channel is also configured, reuse the same channel list rather than issuing a
second API call. Falls back to the Graph GUID if the General channel cannot
be found (renamed/deleted edge case).

Fixes openclaw#41390

* fix(msteams): handle listChannelsForTeam failure gracefully

* fix(msteams): trim General channel ID and guard against empty string

* fix: document MS Teams allowlist team-key fix (openclaw#41838) (thanks @BradGroux)

---------

Co-authored-by: bradgroux <bradgroux@users.noreply.github.com>
Co-authored-by: Onur <onur@textcortex.com>
Merged via squash.

Prepared head SHA: 5cffcb0
Co-authored-by: teconomix <6959299+teconomix@users.noreply.github.com>
Co-authored-by: mukhtharcm <56378562+mukhtharcm@users.noreply.github.com>
Reviewed-by: @mukhtharcm
* ACPX: bump bundled acpx to 0.1.16

* fix: bump acpx pin to 0.1.16 (openclaw#41975) (thanks @dutifulbob)

---------

Co-authored-by: Onur <2453968+osolmaz@users.noreply.github.com>
…me (openclaw#41847)

* feat(acp): add resumeSessionId to sessions_spawn for ACP session resume

Thread resumeSessionId through the ACP session spawn pipeline so agents
can resume existing sessions (e.g. a prior Codex conversation) instead
of starting fresh.

Flow: sessions_spawn tool → spawnAcpDirect → initializeSession →
ensureSession → acpx --resume-session flag → agent session/load

- Add resumeSessionId param to sessions-spawn-tool schema with
  description so agents can discover and use it
- Thread through SpawnAcpParams → AcpInitializeSessionInput →
  AcpRuntimeEnsureInput → acpx extension runtime
- Pass as --resume-session flag to acpx CLI
- Error hard (exit 4) on non-existent session, no silent fallback
- All new fields optional for backward compatibility

Depends on acpx >= 0.1.16 (openclaw/acpx#85, merged, pending release).

Tests: 26/26 pass (runtime + tool schema)
Verified e2e: Discord → sessions_spawn(resumeSessionId) → Codex
resumed session and recalled stored secret.

🤖 AI-assisted

* fix: guard resumeSessionId against non-ACP runtime

Add early-return error when resumeSessionId is passed without
runtime="acp" (mirrors existing streamTo guard). Without this,
the parameter is silently ignored and the agent gets a fresh
session instead of resuming.

Also update schema description to note the runtime=acp requirement.

Addresses Greptile review feedback.

* ACP: add changelog entry for session resume (openclaw#41847) (thanks @pejmanjohn)

---------

Co-authored-by: Pejman Pour-Moezzi <481729+pejmanjohn@users.noreply.github.com>
Co-authored-by: Onur <onur@textcortex.com>
…claw#18655)

Merged via squash.

Prepared head SHA: d30fff1
Co-authored-by: echo931 <259437483+echo931@users.noreply.github.com>
Co-authored-by: mukhtharcm <56378562+mukhtharcm@users.noreply.github.com>
Reviewed-by: @mukhtharcm
…k runs (openclaw#41711)

Merged via squash.

Prepared head SHA: 8be8967
Co-authored-by: cgdusek <38732970+cgdusek@users.noreply.github.com>
Co-authored-by: altaywtf <9790196+altaywtf@users.noreply.github.com>
Reviewed-by: @altaywtf
Merged via squash.

Prepared head SHA: 85c4eb7
Co-authored-by: smysle <207193754+smysle@users.noreply.github.com>
Co-authored-by: hydro13 <6640526+hydro13@users.noreply.github.com>
Reviewed-by: @hydro13
…w#42173)

Models like GLM-5 and DeepSeek sometimes emit internal delimiter tokens in their responses. Uses generic pattern in the text extraction pipeline, following the same architecture as stripMinimaxToolCallXml.

Closes openclaw#40020
Supersedes openclaw#40573

Co-authored-by: imwyvern <100903837+imwyvern@users.noreply.github.com>
frankekn and others added 26 commits March 12, 2026 11:05
Merged via squash.

Prepared head SHA: f06318e
Co-authored-by: frankekn <4488090+frankekn@users.noreply.github.com>
Co-authored-by: frankekn <4488090+frankekn@users.noreply.github.com>
Reviewed-by: @frankekn
…ction engines (openclaw#41361)

Merged via squash.

Prepared head SHA: 0957b32
Co-authored-by: davidrudduck <47308254+davidrudduck@users.noreply.github.com>
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Reviewed-by: @jalehman
…t week (openclaw#43642)

* Models: add temporary Hunter and Healer alpha to OpenRouter catalog

* Add temporary OpenRouter stealth catalog entries

---------

Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
* docs(pi): update dashboard access instructions

* docs(i18n): refresh raspberry pi source hash

* docs: clarify Raspberry Pi dashboard access

* fix: clarify Raspberry Pi dashboard access (openclaw#43584) (thanks @neeravmakwana)

---------

Co-authored-by: Neerav Makwana <261249544+neeravmakwana@users.noreply.github.com>
Co-authored-by: Ayaan Zaidi <zaidi@uplause.io>
* browser: honor shared proxy file size cap

* test(browser): cover proxy file size cap

* docs(changelog): note browser proxy size cap fix
* Infra: block GIT_EXEC_PATH in host env sanitizer

* Changelog: note host env hardening
* Infra: escape invisible exec approval chars

* Gateway: sanitize exec approval display text

* Tests: cover sanitized exec approval payloads

* Tests: cover sanitized exec approval forwarding

* Changelog: note exec approval prompt hardening
* Infra: cap device tokens to approved scopes

* Changelog: note device token hardening
Fixes openclaw#5090

Without this plist key, macOS silently denies Reminders access when
running through OpenClaw.app, preventing the apple-reminders skill
from requesting permission.

(cherry picked from commit e577447)
@linfangw
linfangw merged commit c4a5e3f into main Mar 12, 2026
2 of 9 checks passed
@gemini-code-assist

Copy link
Copy Markdown

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request primarily focuses on enhancing the iOS application with a redesigned home canvas and a streamlined TestFlight release process. It also introduces significant improvements to the macOS application's remote gateway connection experience, providing clearer authentication feedback. Furthermore, the PR refines the project's PR review guidelines to ensure more rigorous bug-fix validation and incorporates several security hardening measures across the codebase, alongside updates to model provider integrations and documentation.

Highlights

  • iOS Application Enhancements: The iOS application received a redesigned home canvas user interface, a streamlined TestFlight release process, and updated versioning to align with the core OpenClaw release numbers.
  • Improved Remote Gateway Connection: The macOS application now provides clearer authentication feedback and enhanced testing capabilities for remote gateway connections, including structured error details for auth failures.
  • Enhanced PR Review Guidelines: New guidelines were added to the .pi/prompts/reviewpr.md and AGENTS.md files, introducing a 'Truthfulness + reality gate' and a 'Claim verification matrix' to ensure more rigorous bug-fix validation.
  • Security Hardening: Several security measures were implemented across the codebase, including improved handling of exec approvals, device pairing, secret file reading (rejecting symlinks), and stripping sensitive environment variables for ACP servers.
  • Model Provider Updates: Ollama onboarding was streamlined, OpenCode Zen and Go catalogs were integrated, and temporary Hunter Alpha and Healer Alpha models were added to OpenRouter's catalog.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • .github/FUNDING.yml
    • Removed custom sponsor link.
  • .github/ISSUE_TEMPLATE/bug_report.yml
    • Added new input fields for model, provider chain, config location, and provider setup details to the bug report template.
  • .gitignore
    • Added 'tmp/' and '.dev-state' to the ignore list.
  • .pi/prompts/reviewpr.md
    • Updated PR review goals to include 'INVALID CLAIM' and added a new 'Truthfulness + reality gate' section for bug-fix claims, along with a 'Claim verification matrix' and additional key questions.
  • AGENTS.md
    • Added a new section on 'PR truthfulness and bug-fix validation' and a 'r: spam' label.
  • CHANGELOG.md
    • Updated the changelog with numerous security fixes, general changes, and bug fixes for the 'Unreleased' and '2026.3.11' sections.
  • CONTRIBUTING.md
    • Added a new contributor, updated local testing instructions to include Codex review, and clarified bot review conversation handling.
  • SECURITY.md
    • Added notes clarifying the scope of exec approvals and what constitutes a security vulnerability.
  • apps/android/app/build.gradle.kts
    • Updated 'versionCode' and 'versionName' to '202603110' and '2026.3.11' respectively.
  • apps/ios/ActivityWidget/Info.plist
    • Updated 'CFBundleShortVersionString' and 'CFBundleVersion' to use '$(OPENCLAW_MARKETING_VERSION)' and '$(OPENCLAW_BUILD_VERSION)'.
  • apps/ios/Config/Signing.xcconfig
    • Included 'Version.xcconfig' and updated bundle IDs to 'ai.openclaw.client'.
  • apps/ios/Config/Version.xcconfig
    • Added a new file to define shared iOS version defaults.
  • apps/ios/README.md
    • Updated distribution status to reflect internal beta distribution via Fastlane and removed outdated TestFlight notes.
  • apps/ios/ShareExtension/Info.plist
    • Updated 'CFBundleShortVersionString' and 'CFBundleVersion' to use '$(OPENCLAW_MARKETING_VERSION)' and '$(OPENCLAW_BUILD_VERSION)'.
  • apps/ios/Signing.xcconfig
    • Included 'Config/Version.xcconfig'.
  • apps/ios/Sources/HomeToolbar.swift
    • Added a new SwiftUI view for the home toolbar.
  • apps/ios/Sources/Info.plist
    • Updated 'CFBundleShortVersionString' and 'CFBundleVersion' to use '$(OPENCLAW_MARKETING_VERSION)' and '$(OPENCLAW_BUILD_VERSION)'.
  • apps/ios/Sources/Model/NodeAppModel+Canvas.swift
    • Modified 'showA2UIOnConnectIfNeeded' to always show the default canvas.
  • apps/ios/Sources/Model/NodeAppModel.swift
    • Added 'homeCanvasRevision' property, 'refreshGatewayOverviewIfConnected' function, and updated 'chatSessionKey' to use 'mainSessionKey'.
    • Incremented 'homeCanvasRevision' on various state changes.
  • apps/ios/Sources/Onboarding/OnboardingWizardView.swift
    • Updated pairing instructions to refer to 'OpenClaw chat' instead of 'Telegram'.
  • apps/ios/Sources/RootCanvas.swift
    • Imported 'OpenClawProtocol', added 'updateHomeCanvasState' and 'makeHomeCanvasPayload' functions, and updated 'onChange' handlers to trigger 'updateHomeCanvasState'.
    • Replaced 'OverlayButton' with 'HomeToolbar'.
  • apps/ios/Sources/Screen/ScreenController.swift
    • Added 'homeCanvasStateJSON' property, 'updateHomeCanvasState', and 'applyHomeCanvasStateIfNeeded' methods.
  • apps/ios/Sources/Screen/ScreenTab.swift
    • Modified 'ScreenWebView' to ignore safe area insets for top, leading, and trailing edges.
  • apps/ios/Sources/Screen/ScreenWebView.swift
    • Added 'applyHomeCanvasStateIfNeeded' call in 'webView(_:didFinish:)'.
  • apps/ios/Sources/Settings/SettingsTab.swift
    • Updated pairing instructions and changed 'Show Talk Button' to 'Show Talk Control'.
  • apps/ios/Sources/Status/StatusPill.swift
    • Added 'compact' parameter and adjusted spacing/font sizes for compact mode.
    • Removed 'Divider' when compact.
  • apps/ios/Tests/Info.plist
    • Updated 'CFBundleShortVersionString' and 'CFBundleVersion' to use '$(OPENCLAW_MARKETING_VERSION)' and '$(OPENCLAW_BUILD_VERSION)'.
  • apps/ios/Tests/NodeAppModelInvokeTests.swift
    • Updated test names and assertions to reflect 'chatSessionKey' defaulting to 'main' instead of 'ios'.
  • apps/ios/WatchApp/Info.plist
    • Updated 'CFBundleShortVersionString' and 'CFBundleVersion' to use '$(OPENCLAW_MARKETING_VERSION)' and '$(OPENCLAW_BUILD_VERSION)'.
  • apps/ios/WatchExtension/Info.plist
    • Updated 'CFBundleShortVersionString' and 'CFBundleVersion' to use '$(OPENCLAW_MARKETING_VERSION)' and '$(OPENCLAW_BUILD_VERSION)'.
  • apps/ios/fastlane/Fastfile
    • Added JSON requirement, 'BETA_APP_IDENTIFIER', and functions for version normalization, build number resolution, and beta release preparation/building.
    • Refactored 'beta' lane into 'prepare_beta_context', 'beta_archive', and 'beta' lanes.
  • apps/ios/fastlane/SETUP.md
    • Updated 'ASC_APP_IDENTIFIER' and 'ASC_APP_ID' examples, and added detailed versioning rules and Fastlane commands for beta releases.
  • apps/ios/fastlane/metadata/README.md
    • Updated 'ASC_APP_ID' example.
  • apps/ios/project.yml
    • Updated 'CFBundleShortVersionString' and 'CFBundleVersion' to use '$(OPENCLAW_MARKETING_VERSION)' and '$(OPENCLAW_BUILD_VERSION)' across all targets.
    • Added 'ASSETCATALOG_COMPILER_APPICON_NAME' for WatchApp.
  • apps/macos/Sources/OpenClaw/AppState.swift
    • Refactored 'syncGatewayConfigIfNeeded' to call a new 'syncGatewayConfigNow' function.
  • apps/macos/Sources/OpenClaw/ControlChannel.swift
    • Added handling for 'RemoteGatewayAuthIssue' in 'statusMessageFromError'.
  • apps/macos/Sources/OpenClaw/GeneralSettings.swift
    • Modified 'RemoteStatus' enum to include 'RemoteGatewayProbeSuccess' and updated 'testRemote' to use 'RemoteGatewayProbe'.
  • apps/macos/Sources/OpenClaw/HostEnvSecurityPolicy.generated.swift
    • Added 'GIT_EXEC_PATH' to the list of environment variables to be stripped.
  • apps/macos/Sources/OpenClaw/NodeMode/MacNodeBrowserProxy.swift
    • Modified 'request' to use 'body.foundationValue' for JSON serialization.
  • apps/macos/Sources/OpenClaw/Onboarding.swift
    • Added 'RemoteOnboardingProbeState', 'remoteAuthIssue', and 'suppressRemoteProbeReset' state variables.
  • apps/macos/Sources/OpenClaw/OnboardingView+Pages.swift
    • Added a new section for remote connection testing and authentication feedback.
    • Removed direct token input from the main form.
  • apps/macos/Sources/OpenClaw/RemoteGatewayProbe.swift
    • Added a new file defining 'RemoteGatewayAuthIssue', 'RemoteGatewayProbeResult', 'RemoteGatewayProbeSuccess', and 'RemoteGatewayProbe' for remote gateway connection testing.
  • apps/macos/Sources/OpenClaw/Resources/Info.plist
    • Updated 'CFBundleShortVersionString' and 'CFBundleVersion' to '2026.3.11' and '202603110'.
    • Added 'NSRemindersUsageDescription'.
  • apps/macos/Sources/OpenClaw/WebChatSwiftUI.swift
    • Added 'webChatThinkingLevelDefaultsKey' and implemented model picker and thinking level persistence in 'MacGatewayChatTransport' and 'WebChatSwiftUIWindowController'.
  • apps/macos/Sources/OpenClawProtocol/GatewayModels.swift
    • Added 'subagentrole' and 'subagentcontrolscope' to 'SessionsPatchParams'.
    • Made 'ExecApprovalRequestParams.command' optional.
  • apps/macos/Tests/OpenClawIPCTests/GatewayChannelConnectTests.swift
    • Added 'authFailed' case to 'FakeResponse' and a test for structured auth failure.
  • apps/macos/Tests/OpenClawIPCTests/GatewayWebSocketTestSupport.swift
    • Added 'connectAuthFailureData' function.
  • apps/macos/Tests/OpenClawIPCTests/MacNodeBrowserProxyTests.swift
    • Added a regression test for nested POST bodies serialization.
  • apps/macos/Tests/OpenClawIPCTests/OnboardingRemoteAuthPromptTests.swift
    • Added a new test file for onboarding remote authentication prompt logic.
  • apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatComposer.swift
    • Added model selection picker and adjusted layout.
  • apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatSessions.swift
    • Defined 'OpenClawChatModelChoice' struct and added 'modelProvider' to session entry.
  • apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatTransport.swift
    • Extended chat transport protocol with model listing and session patching capabilities.
  • apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatViewModel.swift
    • Implemented model and thinking level selection logic with persistence and concurrency handling.
  • apps/shared/OpenClawKit/Sources/OpenClawKit/GatewayChannel.swift
    • Enhanced gateway channel to handle device token retries and pause reconnects on auth failures.
    • Added 'GatewayConnectErrorCodes'.
  • apps/shared/OpenClawKit/Sources/OpenClawKit/GatewayErrors.swift
    • Defined structured error types for gateway connection authentication failures.
  • apps/shared/OpenClawKit/Sources/OpenClawKit/Resources/CanvasScaffold/scaffold.html
    • Updated canvas styling and added dynamic content for home overview.
  • apps/shared/OpenClawKit/Tests/OpenClawKitTests/ChatViewModelTests.swift
    • Added tests for model and thinking level selection, including edge cases for concurrency and session switching.
  • docs/automation/cron-jobs.md
    • Added a note about Mattermost ID resolution.
  • docs/channels/discord.md
    • Clarified token usage for outbound calls and local mode fallback.
  • docs/channels/line.md
    • Added note about symlink rejection for secret files.
  • docs/channels/mattermost.md
    • Clarified Mattermost bare ID resolution.
  • docs/channels/nextcloud-talk.md
    • Added note about symlink rejection for bot secret files.
  • docs/channels/telegram.md
    • Clarified 'groupAllowFrom' usage and symlink rejection for token files.
  • docs/channels/zalo.md
    • Added note about symlink rejection for token files.
  • docs/cli/acp.md
    • Clarified local mode fallback for gateway auth.
  • docs/cli/devices.md
    • Added a token drift recovery checklist section.
  • docs/cli/index.md
    • Updated 'onboard' command options and node auth notes.
  • docs/cli/node.md
    • Clarified node host auth resolution, explicitly ignoring 'gateway.remote.*' in local mode and failing closed for unresolved SecretRefs.
  • docs/concepts/memory.md
    • Added 'Multimodal memory files (Gemini image + audio)' section and notes on Gemini Embedding 2.
  • docs/concepts/model-providers.md
    • Updated OpenCode section to include Go runtime provider and clarified Ollama onboarding.
  • docs/concepts/models.md
    • Updated OpenCode reference.
  • docs/docs.json
    • Updated redirects and sidebar entries for new providers and removed old browser troubleshooting.
  • docs/gateway/configuration-reference.md
    • Clarified token file requirements, multi-account config writes, and OpenCode provider overrides.
  • docs/gateway/doctor.md
    • Updated OpenCode provider override warnings.
  • docs/gateway/local-models.md
    • Added recommendation for Ollama for low-friction local setup.
  • docs/gateway/protocol.md
    • Added details on auth failure error codes and client behavior for 'AUTH_TOKEN_MISMATCH'.
    • Clarified Control UI device identity requirements.
  • docs/gateway/remote.md
    • Clarified credential precedence, 'gateway.remote.*' fallback, and node-host local-mode exceptions.
  • docs/gateway/secrets.md
    • Added a note about outbound delivery paths reading from the active snapshot.
    • Clarified web search auto-detection and SecretRef 'id' validation.
  • docs/gateway/security/index.md
    • Clarified exec approval semantics and Control UI auth.
    • Added a note on approval mode binding for 'system.run'.
  • docs/gateway/troubleshooting.md
    • Added auth detail codes quick map and token drift recovery.
  • docs/help/faq.md
    • Updated auth fallback, web search keys, and Ollama setup.
    • Updated Control UI 'AUTH_TOKEN_MISMATCH' troubleshooting.
  • docs/help/testing.md
    • Updated OpenCode reference and added a note on SecretRef traversal guardrail.
  • docs/help/troubleshooting.md
    • Updated UI troubleshooting for auth errors.
  • docs/nodes/index.md
    • Added a detailed 'Approval note' for node runs.
    • Clarified node host auth resolution.
  • docs/perplexity.md
    • Added notes on SecretRef support for 'apiKey' and fail-fast behavior.
  • docs/platforms/mac/release.md
    • Updated app version to '2026.3.11' in release scripts.
  • docs/platforms/raspberry-pi.md
    • Updated dashboard access instructions to use 'openclaw dashboard --no-open' and SSH tunneling.
  • docs/providers/index.md
    • Updated OpenCode reference.
  • docs/providers/models.md
    • Updated OpenCode reference.
  • docs/providers/ollama.md
    • Updated Ollama quick start and model discovery details.
  • docs/providers/opencode-go.md
    • Added new documentation for OpenCode Go.
  • docs/providers/opencode.md
    • Updated OpenCode documentation to cover both Zen and Go catalogs.
  • docs/reference/RELEASING.md
    • Added a 'Versioning' section with details on date-based versioning and npm release checks.
  • docs/reference/api-usage-costs.md
    • Updated web search API key fields to include provider-specific config paths.
  • docs/reference/secretref-credential-surface.md
    • Added 'tools.web.fetch.firecrawl.apiKey' to scope intent.
    • Clarified web search auto-detection and SecretRef 'id' validation.
  • docs/reference/wizard.md
    • Updated OpenCode description to include both Zen and Go catalogs.
  • docs/start/setup.md
    • Clarified Telegram token file requirements.
  • docs/start/wizard-cli-automation.md
    • Updated OpenCode accordion title and added a note for swapping to Go catalog.
  • docs/start/wizard-cli-reference.md
    • Updated OpenCode description.
  • docs/tools/acp-agents.md
    • Added 'resumeSessionId' to 'sessions_spawn' and a new section on 'Resume an existing session'.
  • docs/tools/exec-approvals.md
    • Clarified exec approval binding for command context and file operands, and handling of ambiguous interpreter commands.
  • docs/tools/firecrawl.md
    • Clarified 'firecrawl.enabled' default and API key requirement.
  • docs/tools/slash-commands.md
    • Added a note about multi-account channels honoring 'configWrites'.
  • docs/tools/subagents.md
    • Added a note about role and control scope being written into session metadata.
  • docs/tools/web.md
    • Updated web search tools summary, clarified API key storage, and added runtime SecretRef behavior.
  • docs/web/control-ui.md
    • Clarified 'allowInsecureAuth' as a local compatibility toggle.
  • docs/web/dashboard.md
    • Added troubleshooting for 'AUTH_TOKEN_MISMATCH' and a link to the token drift recovery checklist.
  • extensions/acpx/openclaw.plugin.json
    • Updated 'expectedVersion' help text to '0.1.16'.
  • extensions/acpx/package.json
    • Updated 'version' to '2026.3.11' and 'acpx' dependency to '0.2.0'.
  • extensions/acpx/src/config.test.ts
    • Removed 'toAcpMcpServers' import and tests for 'mcpServers'.
    • Added 'stripProviderAuthEnvVars' expectation.
  • extensions/acpx/src/config.ts
    • Updated 'ACPX_PINNED_VERSION' to '0.1.16' and added 'stripProviderAuthEnvVars' to 'ResolvedAcpxPluginConfig'.
  • extensions/acpx/src/ensure.test.ts
    • Added 'stripProviderAuthEnvVars' to 'checkAcpxVersion' calls and 'spawnAndCollectMock' expectations.
  • extensions/acpx/src/ensure.ts
    • Added 'stripProviderAuthEnvVars' parameter to 'checkAcpxVersion' and 'ensureAcpx'.
  • extensions/acpx/src/runtime-internals/mcp-agent-command.test.ts
    • Added new test file for 'mcp-agent-command' including 'stripProviderAuthEnvVars' threading and Windows path escaping.
  • extensions/acpx/src/runtime-internals/mcp-agent-command.ts
    • Added '__testing' export for 'quoteCommandPart' and 'stripProviderAuthEnvVars' to 'loadAgentOverrides' and 'resolveAcpxAgentCommand'.
  • extensions/acpx/src/runtime-internals/process.test.ts
    • Added tests for stripping provider auth env vars.
  • extensions/acpx/src/runtime-internals/process.ts
    • Added 'stripProviderAuthEnvVars' to 'spawnWithResolvedCommand' and 'spawnAndCollect', using 'omitEnvKeysCaseInsensitive' and 'listKnownProviderAuthEnvVarNames'.
  • extensions/acpx/src/runtime.test.ts
    • Added 'stripProviderAuthEnvVars' to 'createMockRuntimeFixture' and a test for 'sessions new' with 'resumeSessionId'.
    • Added test for preserving provider auth env vars.
  • extensions/acpx/src/runtime.ts
    • Added 'stripProviderAuthEnvVars' to 'checkAcpxVersion' calls.
    • Modified 'ensureSession' to use 'sessions new' with 'resumeSessionId' when provided.
  • extensions/acpx/src/service.test.ts
    • Added 'stripProviderAuthEnvVars' expectation to 'ensureAcpxSpy'.
  • extensions/acpx/src/service.ts
    • Added 'stripProviderAuthEnvVars' to 'ensureAcpx' call.
  • extensions/acpx/src/test-utils/runtime-fixtures.ts
    • Added 'openaiApiKey' and 'githubToken' to 'createSystemRunPromptLogEntry' and 'stripProviderAuthEnvVars' to 'createMockRuntimeFixture'.
  • extensions/bluebubbles/package.json
    • Updated 'version' to '2026.3.11'.
  • extensions/bluebubbles/src/channel.ts
    • Imported 'createAccountStatusSink' and used it in 'startAccount'.
  • extensions/bluebubbles/src/config-schema.ts
    • Updated 'dmPolicy', 'allowFrom', 'groupAllowFrom', and 'groupPolicy' to use common compat schemas.
  • extensions/bluebubbles/src/onboarding.ts
    • Imported 'patchScopedAccountConfig' and used it in 'setBlueBubblesAllowFrom'.
  • extensions/copilot-proxy/package.json
    • Updated 'version' to '2026.3.11'.
  • extensions/diagnostics-otel/package.json
    • Updated 'version' to '2026.3.11'.
  • extensions/diffs/package.json
    • Updated 'version' to '2026.3.11'.
  • extensions/diffs/src/browser.test.ts
    • Updated temporary directory creation and cleanup.
  • extensions/diffs/src/http.test.ts
    • Updated temporary directory creation and cleanup, and added parameterized tests for remote viewer access.
  • extensions/diffs/src/store.test.ts
    • Updated temporary directory creation and cleanup.
  • extensions/diffs/src/test-helpers.ts
    • Added new file with helper functions for creating temporary directories and diff store harnesses.
  • extensions/diffs/src/tool.test.ts
    • Updated temporary directory creation and cleanup.
  • extensions/discord/package.json
    • Updated 'version' to '2026.3.11'.
  • extensions/feishu/package.json
    • Updated 'version' to '2026.3.11' and 'https-proxy-agent' dependency.
  • extensions/feishu/src/outbound.test.ts
    • Added 'mediaLocalRoots' to 'sendText' call.
  • extensions/feishu/src/outbound.ts
    • Added 'mediaLocalRoots' to 'sendText' parameters.
  • extensions/google-gemini-cli-auth/package.json
    • Updated 'version' to '2026.3.11'.
  • extensions/googlechat/package.json
    • Updated 'version' to '2026.3.11' and 'defaultChoice' for install.
  • extensions/googlechat/src/channel.ts
    • Imported 'createScopedDmSecurityResolver', 'runPassiveAccountLifecycle', 'createAccountStatusSink' and used them.
    • Removed 'buildAccountScopedDmSecurityPolicy'.
  • extensions/googlechat/src/onboarding.ts
    • Imported 'applySetupAccountConfigPatch' and used it in 'promptCredentials' and 'promptAudience'.
    • Removed 'applyAccountConfig'.
  • extensions/imessage/package.json
    • Updated 'version' to '2026.3.11'.
  • extensions/irc/package.json
    • Updated 'version' to '2026.3.11'.
  • extensions/irc/src/accounts.test.ts
    • Added test for rejecting symlinked password files.
  • extensions/irc/src/accounts.ts
    • Used 'tryReadSecretFileSync' with 'rejectSymlink: true' for password files.
  • extensions/irc/src/channel.startup.test.ts
    • Added new test file for IRC channel startup.
  • extensions/irc/src/channel.ts
    • Imported 'createAccountStatusSink', 'runPassiveAccountLifecycle' and used them.
  • extensions/irc/src/onboarding.ts
    • Imported 'patchScopedAccountConfig' and used it in 'updateIrcAccountConfig'.
  • extensions/line/package.json
    • Updated 'version' to '2026.3.11'.
  • extensions/line/src/channel.ts
    • Imported 'createScopedChannelConfigBase', 'createScopedDmSecurityResolver' and used them.
    • Removed 'buildAccountScopedDmSecurityPolicy'.
  • extensions/llm-task/package.json
    • Updated 'version' to '2026.3.11'.
  • extensions/lobster/package.json
    • Updated 'version' to '2026.3.11'.
  • extensions/matrix/CHANGELOG.md
    • Added version alignment entry.
  • extensions/matrix/package.json
    • Updated 'version' to '2026.3.11' and 'defaultChoice' for install.
  • extensions/matrix/src/channel.ts
    • Imported 'createScopedChannelConfigBase', 'createScopedDmSecurityResolver' and used them.
    • Removed 'buildAccountScopedDmSecurityPolicy'.
  • extensions/matrix/src/config-schema.ts
    • Updated 'allowFromEntry' to 'AllowFromListSchema', 'matrixDmSchema' to 'buildNestedDmConfigSchema', and 'groupAllowFrom' to 'AllowFromListSchema'.
  • extensions/matrix/src/matrix/monitor/allowlist.ts
    • Imported 'compileAllowlist' and updated 'resolveMatrixAllowListMatch' to use it.
  • extensions/mattermost/package.json
    • Updated 'version' to '2026.3.11'.
  • extensions/mattermost/src/channel.test.ts
    • Added tests for 'replyTo' and 'replyToId' mapping in send actions.
  • extensions/mattermost/src/channel.ts
    • Imported 'resolveMattermostOpaqueTarget' and 'createAccountStatusSink' and used them.
    • Added 'readMattermostReplyToId'.
  • extensions/mattermost/src/mattermost/monitor-helpers.test.ts
    • Added new test file for 'normalizeMention'.
  • extensions/mattermost/src/mattermost/monitor-helpers.ts
    • Added 'normalizeMention' function.
  • extensions/mattermost/src/mattermost/monitor.ts
    • Removed local 'normalizeMention'.
  • extensions/mattermost/src/mattermost/send.test.ts
    • Imported 'resetMattermostOpaqueTargetCacheForTests' and added tests for user-first resolution of bare Mattermost IDs.
  • extensions/mattermost/src/mattermost/send.ts
    • Integrated opaque target resolution.
  • extensions/mattermost/src/mattermost/target-resolution.ts
    • Added new file for Mattermost target resolution.
  • extensions/memory-core/package.json
    • Updated 'version' to '2026.3.11'.
  • extensions/memory-lancedb/package.json
    • Updated 'version' to '2026.3.11'.
  • extensions/minimax-portal-auth/package.json
    • Updated 'version' to '2026.3.11'.
  • extensions/msteams/CHANGELOG.md
    • Added version alignment entry.
  • extensions/msteams/package.json
    • Updated 'version' to '2026.3.11' and 'defaultChoice' for install.
  • extensions/msteams/src/resolve-allowlist.test.ts
    • Updated tests for 'resolveMSTeamsChannelAllowlist' to reflect new team ID resolution logic.
  • extensions/msteams/src/resolve-allowlist.ts
    • Modified 'resolveMSTeamsChannelAllowlist' to use General channel conversation ID as team key.
  • extensions/nextcloud-talk/package.json
    • Updated 'version' to '2026.3.11'.
  • extensions/nextcloud-talk/src/accounts.test.ts
    • Added test for rejecting symlinked bot secret files.
  • extensions/nextcloud-talk/src/accounts.ts
    • Used 'tryReadSecretFileSync' with 'rejectSymlink: true' for bot secret files.
  • extensions/nextcloud-talk/src/channel.ts
    • Integrated account status sink and passive account lifecycle.
  • extensions/nextcloud-talk/src/onboarding.ts
    • Used 'patchScopedAccountConfig' and 'runSingleChannelSecretStep' for config updates.
  • extensions/nostr/CHANGELOG.md
    • Added version alignment entry.
  • extensions/nostr/package.json
    • Updated 'version' to '2026.3.11' and 'defaultChoice' for install.
  • extensions/nostr/src/config-schema.ts
    • Removed 'allowFromEntry' and updated 'dmPolicy' and 'allowFrom' to use common compat schemas.
  • extensions/open-prose/package.json
    • Updated 'version' to '2026.3.11'.
  • extensions/signal/package.json
    • Updated 'version' to '2026.3.11'.
  • extensions/slack/package.json
    • Updated 'version' to '2026.3.11'.
  • extensions/synology-chat/package.json
    • Updated 'version' to '2026.3.11' and 'defaultChoice' for install.
  • extensions/telegram/package.json
    • Updated 'version' to '2026.3.11'.
  • extensions/telegram/src/channel.test.ts
    • Added tests for proxy and network settings in Telegram probes and membership audits.
    • Added test for sending multiple media URLs with buttons on the first message.
  • extensions/telegram/src/channel.ts
    • Imported 'sendTelegramPayloadMessages' and used it in 'sendPayload'.
    • Updated 'probeAccount' and 'auditAccount' to pass network settings.
    • Removed 'TelegramInlineButtons' type.
  • extensions/tlon/package.json
    • Updated 'version' to '2026.3.11' and 'defaultChoice' for install.
  • extensions/tlon/src/onboarding.ts
    • Imported 'patchScopedAccountConfig' and used it in 'applyAccountConfig'.
  • extensions/twitch/CHANGELOG.md
    • Added version alignment entry.
  • extensions/twitch/package.json
    • Updated 'version' to '2026.3.11'.
  • extensions/voice-call/CHANGELOG.md
    • Added version alignment entry.
  • extensions/voice-call/openclaw.plugin.json
    • Added 'baseUrl', 'speed', and 'instructions' to OpenAI TTS config schema.
  • extensions/voice-call/package.json
    • Updated 'version' to '2026.3.11'.
  • extensions/voice-call/src/providers/tts-openai.ts
    • Imported 'resolveOpenAITtsInstructions' and used it for 'effectiveInstructions'.
  • extensions/whatsapp/package.json
    • Updated 'version' to '2026.3.11'.
  • extensions/zalo/CHANGELOG.md
    • Added version alignment entry.
  • extensions/zalo/package.json
    • Updated 'version' to '2026.3.11'.
  • extensions/zalo/src/channel.sendpayload.test.ts
    • Updated to use 'installSendPayloadContractSuite'.
  • extensions/zalo/src/channel.ts
    • Imported 'createAccountStatusSink' and used it in 'startAccount'.
  • extensions/zalo/src/config-schema.ts
    • Updated 'allowFrom', 'groupAllowFrom', 'dmPolicy', and 'groupPolicy' to use common compat schemas.
  • extensions/zalo/src/onboarding.ts
    • Imported 'runSingleChannelSecretStep' and used it for token and API password prompts.
    • Removed 'buildSingleChannelSecretPromptState'.
  • extensions/zalo/src/token.test.ts
    • Added test for rejecting symlinked token files.
  • extensions/zalo/src/token.ts
    • Used 'tryReadSecretFileSync' with 'rejectSymlink: true' for token files.
  • extensions/zalouser/CHANGELOG.md
    • Added version alignment entry.
  • extensions/zalouser/package.json
    • Updated 'version' to '2026.3.11'.
  • extensions/zalouser/src/channel.sendpayload.test.ts
    • Updated to use 'installSendPayloadContractSuite'.
  • extensions/zalouser/src/channel.ts
    • Imported 'createAccountStatusSink' and used it in 'startAccount'.
  • extensions/zalouser/src/config-schema.ts
    • Updated 'allowFrom', 'groupAllowFrom', 'dmPolicy', and 'groupPolicy' to use common compat schemas.
  • extensions/zalouser/src/onboarding.ts
    • Imported 'patchScopedAccountConfig' and used it in 'setZalouserAccountScopedConfig'.
  • package.json
    • Updated various dependencies, added new 'ios' scripts, 'release:openclaw:npm:check', and 'test:auth:compat' scripts.
  • scripts/ios-beta-archive.sh
    • Added new script for archiving iOS beta releases.
  • scripts/ios-beta-prepare.sh
    • Added new script for preparing iOS beta release inputs.
  • scripts/ios-beta-release.sh
    • Added new script for archiving and uploading iOS beta releases.
  • scripts/ios-write-version-xcconfig.sh
    • Added new script for writing iOS version xcconfig from 'package.json'.
  • scripts/openclaw-npm-release-check.ts
    • Added new script for validating npm release metadata and tags.
  • skills/eightctl/SKILL.md
    • Updated emoji.
  • skills/gemini/SKILL.md
    • Updated emoji.
  • skills/openai-image-gen/SKILL.md
    • Updated emoji.
  • skills/openai-whisper-api/SKILL.md
    • Updated emoji.
  • skills/openai-whisper/SKILL.md
    • Updated emoji.
  • skills/sag/SKILL.md
    • Updated emoji.
  • skills/sherpa-onnx-tts/SKILL.md
    • Updated emoji.
  • skills/video-frames/SKILL.md
    • Updated emoji.
  • skills/weather/SKILL.md
    • Updated emoji.
  • skills/xurl/SKILL.md
    • Updated emoji.
  • src/acp/client.test.ts
    • Added tests for stripping provider auth env vars for ACP client spawn environment.
  • src/acp/client.ts
    • Added functions 'shouldStripProviderAuthEnvVarsForAcpServer' and 'buildAcpClientStripKeys' for managing environment variables.
  • src/acp/control-plane/manager.core.ts
    • Updated 'resolveSession' and other methods to use 'canonicalizeAcpSessionKey'.
  • src/acp/control-plane/manager.test.ts
    • Added test for canonicalizing main alias before ACP rehydrate.
  • src/acp/control-plane/manager.types.ts
    • Added 'resumeSessionId' to 'AcpInitializeSessionInput'.
  • src/acp/control-plane/manager.utils.ts
    • Added 'canonicalizeAcpSessionKey' function.
  • src/acp/runtime/types.ts
    • Added 'resumeSessionId'.
  • src/acp/secret-file.test.ts
    • Updated to use 'readSecretFileSync' from 'infra/secret-file.ts'.
  • src/acp/secret-file.ts
    • Updated to use 'readSecretFileSync' from 'infra/secret-file.ts'.
  • src/acp/translator.cancel-scoping.test.ts
    • Added new test file for ACP translator cancel and run scoping.
  • src/acp/translator.session-rate-limit.test.ts
    • Updated 'createSetSessionConfigOptionRequest' to accept boolean values and added a test for rejecting non-string config option values.
  • src/acp/translator.ts
    • Modified 'cancel' to use 'scopedRunId' and 'chat.abort' with 'runId'.
    • Updated 'handleAgentEvent' and 'handleChatEvent' to filter by 'runId'.
    • Modified 'resolveSessionConfigPatch' to reject non-string values.
  • src/agents/acp-spawn-parent-stream.ts
    • Updated 'scopedHeartbeatWakeOptions' call.
  • src/agents/acp-spawn.test.ts
    • Added 'areHeartbeatsEnabledMock' and tests for implicit streaming of 'mode=run' ACP spawns for subagent requester sessions.
  • src/agents/acp-spawn.ts
    • Added 'isHeartbeatEnabledForSessionAgent', 'resolveHeartbeatConfigForAgent', 'hasSessionLocalHeartbeatRelayRoute' and logic for implicit streaming of ACP spawns.
  • src/agents/anthropic-payload-log.ts
    • Modified 'nextOnPayload' to pass 'model' directly to 'options?.onPayload'.
  • src/agents/auth-profiles/oauth.openai-codex-refresh-fallback.test.ts
    • Updated mock for '@mariozechner/pi-ai' to target 'oauth' submodule.
  • src/agents/auth-profiles/oauth.ts
    • Updated import for 'OAuthCredentials' and 'OAuthProvider'.
  • src/agents/auth-profiles/usage.test.ts
    • Updated expectation for cooldown reason from 'rate_limit' to 'unknown'.
  • src/agents/auth-profiles/usage.ts
    • Changed default cooldown reason from 'rate_limit' to 'unknown' when no reason history.
  • src/agents/bash-tools.exec-approval-request.ts
    • Made 'command' optional in 'RequestExecApprovalDecisionParams' and 'HostExecApprovalParams'.
  • src/agents/bash-tools.exec-host-node.ts
    • Used 'prepared.plan.commandText' instead of 'cmdText' and removed 'command' and 'commandArgv' from 'registerExecApprovalRequestForHostOrThrow'.
  • src/agents/huggingface-models.ts
    • Imported 'isReasoningModelHeuristic' and used it in 'inferredMetaFromModelId'.
  • src/agents/lanes.test.ts
    • Added new test file for agent lanes.
  • src/agents/lanes.ts
    • Added 'resolveNestedAgentLane' function.
  • src/agents/live-model-filter.ts
    • Added 'opencode-go' to providers that accept any model ID.
  • src/agents/memory-search.test.ts
    • Added tests for multimodal memory settings, including normalization, empty modalities, and rejection of unsupported providers or fallback.
  • src/agents/memory-search.ts
    • Added multimodal memory configuration and validation.
  • src/agents/model-auth-env-vars.ts
    • Added 'opencode-go' and 'modelstudio' to 'PROVIDER_ENV_API_KEY_CANDIDATES'.
  • src/agents/model-auth-label.test.ts
    • Updated mock for 'getCustomProviderApiKey' to 'resolveUsableCustomProviderApiKey'.
  • src/agents/model-auth-label.ts
    • Updated import for 'resolveUsableCustomProviderApiKey'.
  • src/agents/model-auth-markers.test.ts
    • Added tests for 'isKnownEnvApiKeyMarker'.
  • src/agents/model-auth-markers.ts
    • Added 'isKnownEnvApiKeyMarker' function.
  • src/agents/model-auth.profiles.test.ts
    • Added test for resolving Model Studio API key from env.
    • Added test for 'resolveEnvApiKey('opencode-go')' falling back to 'OPENCODE_ZEN_API_KEY'.
  • src/agents/model-auth.test.ts
    • Added tests for 'resolveUsableCustomProviderApiKey' and 'hasUsableCustomProviderApiKey'.
  • src/agents/model-auth.ts
    • Implemented usable custom provider API key resolution.
  • src/agents/model-compat.test.ts
    • Added test for 'opencode-go' models in 'isModernModelRef'.
  • src/agents/model-fallback.test.ts
    • Updated expected cooldown reason from 'rate_limit' to 'unknown'.
    • Added tests for limiting cooldown probes and preserving transient probe slots.
  • src/agents/model-fallback.ts
    • Changed default cooldown reason from 'rate_limit' to 'unknown'.
    • Implemented logic for limiting cooldown probes per provider.
  • src/agents/model-scan.ts
    • Guarded optional 'model.input' capability checks.
  • src/agents/model-selection.ts
    • Added 'opencode-go-auth' normalization.
  • src/agents/models-config.e2e-harness.ts
    • Added 'MODELSTUDIO_API_KEY' to 'MODELS_CONFIG_IMPLICIT_ENV_VARS'.
  • src/agents/models-config.fills-missing-provider-apikey-from-env-var.test.ts
    • Added test for replacing stale merged 'apiKey' when config key normalizes to a known env marker.
  • src/agents/models-config.merge.test.ts
    • Added test for not preserving stale plaintext 'apiKey' when next entry is a marker.
  • src/agents/models-config.merge.ts
    • Modified 'shouldPreserveExistingApiKey' to not preserve 'apiKey' if 'nextEntry.apiKey' is a non-secret marker.
  • src/agents/models-config.providers.discovery.ts
    • Updated Ollama model discovery to use 'ollama-models.ts' helpers.
    • Removed local 'OllamaModel' and 'OllamaTagsResponse' interfaces.
  • src/agents/models-config.providers.modelstudio.test.ts
    • Added new test file for Model Studio implicit provider.
  • src/agents/models-config.providers.normalize-keys.test.ts
    • Added 'secretRefManagedProviders' to 'normalizeProviders' call.
  • src/agents/models-config.providers.static.ts
    • Added Model Studio provider and updated OpenRouter models.
  • src/agents/models-config.providers.ts
    • Added Model Studio provider exports.
  • src/agents/models-config.runtime-source-snapshot.test.ts
    • Added test for projecting cloned runtime configs onto source snapshot.
  • src/agents/models-config.ts
    • Modified 'resolveModelsConfigInput' to use 'projectConfigOntoRuntimeSourceSnapshot'.
  • src/agents/ollama-models.test.ts
    • Added new test file for Ollama models.
  • src/agents/ollama-models.ts
    • Added new file with Ollama model utilities.
  • src/agents/openai-responses.reasoning-replay.test.ts
    • Added 'extractInputMessages' and tests for replaying assistant message phase metadata.
  • src/agents/openai-ws-connection.test.ts
    • Updated 'warmUp' to use 'FunctionToolDefinition' directly.
  • src/agents/openai-ws-connection.ts
    • Updated 'FunctionToolDefinition' interface and added 'OpenAIResponsesAssistantPhase' type.
  • src/agents/openai-ws-stream.e2e.test.ts
    • Updated model ID to 'gpt-5.2'.
    • Added tests for tool-call follow-up turns and websocket warm-up.
    • Updated timeouts.
  • src/agents/openai-ws-stream.test.ts
    • Added tests for assistant phase and reasoning blocks.
  • src/agents/openai-ws-stream.ts
    • Implemented assistant message phase handling and websocket warm-up logic.
  • src/agents/openclaw-tools.camera.test.ts
    • Updated system run plan payload.
  • src/agents/openclaw-tools.session-status.test.ts
    • Updated mock for custom provider API key.
  • src/config/config.ts
    • Added 'projectConfigOntoRuntimeSourceSnapshot' function.
  • src/config/paths.ts
    • Added 'TMP_DIR' constant.
  • src/config/sessions/main-session.ts
    • Added 'canonicalizeMainSessionAlias' function.
  • src/config/types.models.ts
    • Added 'outputDimensionality' to 'ModelDefinitionConfig'.
  • src/config/types.secrets.ts
    • Added 'isSecretRefExecTraversalId' and 'isSecretRefFileTraversalId' functions.
  • src/config/zod-schemas.ts
    • Added 'outputDimensionality' to 'MemorySearchConfigSchema'.
  • src/gateway/client.ts
    • Added 'GatewayConnectAuthError' to 'statusMessageFromError'.
  • src/gateway/protocol/connect-error-details.test.ts
    • Added new test file for connect error details.
  • src/gateway/protocol/index.ts
    • Added 'GatewayConnectAuthDetailCode' and 'GatewayConnectRecoveryNextStep' enums.
  • src/gateway/reconnect-gating.test.ts
    • Added new test file for reconnect gating.
  • src/gateway/server.auth.compat-baseline.test.ts
    • Added new test file for server auth compat baseline.
  • src/infra/archive-extraction.test.ts
    • Added new test file for archive extraction.
  • src/infra/archive-extraction.ts
    • Added 'extractTarball' and 'extractZip' functions with hardened path handling.
  • src/infra/file-system.test.ts
    • Added new test file for file system utilities.
  • src/infra/file-system.ts
    • Added 'isRegularFile' and 'isSymlink' functions.
  • src/infra/heartbeat-wake.test.ts
    • Added new test file for heartbeat wake.
  • src/infra/heartbeat-wake.ts
    • Added 'DEFAULT_HEARTBEAT_EVERY' and 'areHeartbeatsEnabled' function.
  • src/infra/secret-file.test.ts
    • Added new test file for secret file reading.
  • src/infra/secret-file.ts
    • Added new file with 'readSecretFileSync' function for hardened secret file reading.
  • src/memory/multimodal.test.ts
    • Added new test file for memory multimodal settings.
  • src/memory/multimodal.ts
    • Added new file with functions for memory multimodal settings.
  • src/plugin-sdk/compat.ts
    • Added 'createScopedDmSecurityResolver', 'runPassiveAccountLifecycle', 'createAccountStatusSink', 'patchScopedAccountConfig', 'createScopedChannelConfigBase', 'runSingleChannelSecretStep'.
  • src/plugin-sdk/core.ts
    • Exported 'tryReadSecretFileSync'.
  • src/plugin-sdk/windows-spawn.ts
    • Added 'resolveWindowsSpawnProgramCandidate' and 'materializeWindowsSpawnProgram'.
  • src/process/command-line.test.ts
    • Added new test file for 'stripInvisibleUnicodeFormatCharacters'.
  • src/process/command-line.ts
    • Added 'stripInvisibleUnicodeFormatCharacters'.
  • src/process/exec.test.ts
    • Added test for stripping invisible Unicode format characters.
  • src/process/exec.ts
    • Added 'stripInvisibleUnicodeFormatCharacters' to 'spawnAndCollect'.
  • src/process/lanes.ts
    • Added 'CommandLane.Nested'.
  • src/process/system-run-plan.test.ts
    • Updated 'buildSystemRunApprovalPlan' to use 'commandText'.
  • src/process/system-run-plan.ts
    • Added 'commandText' to 'SystemRunApprovalPlan'.
  • src/providers/ollama.ts
    • Updated 'OLLAMA_DEFAULT_BASE_URL'.
  • src/providers/openai.test.ts
    • Updated 'isToolCall' and 'isToolCallUpdate' tests.
  • src/providers/openai.ts
    • Updated 'isToolCall' and 'isToolCallUpdate' to handle new tool call format.
  • src/providers/openai.types.ts
    • Updated 'ToolCall' and 'ToolCallUpdate' interfaces.
  • src/providers/openai.ws.ts
    • Updated 'ToolCall' and 'ToolCallUpdate' interfaces.
  • src/routing/session-key.ts
    • Added 'isSubagentSessionKey'.
  • src/secrets/exec-secret-ref-id-parity.test.ts
    • Added new test file for exec secret ref ID parity.
  • src/secrets/provider-env-vars.ts
    • Added 'listKnownProviderAuthEnvVarNames' and 'omitEnvKeysCaseInsensitive'.
  • src/secrets/secret-ref-validation.test.ts
    • Added new test file for secret ref validation.
  • src/secrets/secret-ref-validation.ts
    • Added 'validateSecretRefId' and 'validateSecretRefFileId'.
  • src/secrets/target-registry-data.ts
    • Added 'tools.web.fetch.firecrawl.apiKey' to 'SECRET_TARGET_REGISTRY'.
  • src/security/dangerous-tools.ts
    • Added 'nodes' to 'DANGEROUS_TOOLS'.
  • src/security/exec-approvals.test.ts
    • Updated 'createExecApprovalRequest' to use 'commandText'.
  • src/security/exec-approvals.ts
    • Added 'commandText' to 'ExecApprovalRequest'.
  • src/security/host-env-policy.ts
    • Added 'GIT_EXEC_PATH' to 'HOST_ENV_DENY_LIST'.
  • src/security/sandbox.test.ts
    • Added new test file for sandbox staged writes.
  • src/security/sandbox.ts
    • Added 'pinStagedWritesToVerifiedParentDirectories'.
  • src/security/subagent-control-scope.test.ts
    • Added new test file for subagent control scope.
  • src/security/subagent-control-scope.ts
    • Added 'resolveSubagentControlScope'.
  • src/security/subagent-session-visibility.test.ts
    • Added new test file for subagent session visibility.
  • src/security/subagent-session-visibility.ts
    • Added 'resolveSubagentSessionVisibility'.
  • src/security/trusted-proxy.test.ts
    • Added new test file for shared media store size cap.
  • src/security/trusted-proxy.ts
    • Added 'restoreSharedMediaStoreSizeCap'.
  • src/security/unicode-spoofing.test.ts
    • Added new test file for unicode spoofing.
  • src/security/unicode-spoofing.ts
    • Added 'escapeInvisibleUnicodeFormatCharacters'.
  • src/test-utils/send-payload-contract.ts
    • Added new file with test utilities for send payload contract.
  • src/test-utils/start-account-context.ts
    • Added new file with test utilities for start account context.
  • src/tools/web-search.ts
    • Updated 'extractOpenRouterPerplexityCitations'.
  • src/tools/web.test.ts
    • Updated 'resolveWebSearchProviderApiKey' tests.
  • src/tools/web.ts
    • Updated 'resolveWebSearchProviderApiKey'.
  • src/utils.test.ts
    • Added new test file.
  • src/utils.ts
    • Added 'stripControlCharacters'.
  • vitest.gateway.config.ts
    • Added 'src/gateway/protocol/connect-error-details.test.ts', 'src/gateway/reconnect-gating.test.ts', 'src/gateway/server.auth.compat-baseline.test.ts' to test files.
Ignored Files
  • Ignored by pattern: .github/workflows/** (6)
    • .github/workflows/auto-response.yml
    • .github/workflows/ci.yml
    • .github/workflows/codeql.yml
    • .github/workflows/docker-release.yml
    • .github/workflows/install-smoke.yml
    • .github/workflows/openclaw-npm-release.yml
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces significant enhancements to the bug reporting and code review processes, primarily by integrating a new 'Truthfulness + reality gate' for bug-fix claims, requiring explicit evidence, root cause verification, and regression tests. It also adds new fields to the bug report template for better model and provider configuration details. For iOS, the changes include a new local beta release flow with Fastlane integration, updated versioning to use Xcode config variables, and a redesigned Home canvas with a new toolbar and live agent overview. Security is improved by hardening secret file reads against symlink attacks and enhancing exec approval mechanisms. Numerous bug fixes and minor improvements are also included across various components, such as agent fallback logic, channel integrations (Mattermost, Telegram, MS Teams), and UI elements.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.