Skip to content

Commit 757eb17

Browse files
committed
Auto-merge upstream openclaw/openclaw
2 parents 40918e9 + 21d9bac commit 757eb17

135 files changed

Lines changed: 979 additions & 297 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ Docs: https://docs.openclaw.ai
44

55
## Unreleased
66

7+
### Fixes
8+
9+
- Slack/media: preserve bearer auth across same-origin `files.slack.com` redirects while still stripping it on cross-origin Slack CDN hops, so `url_private_download` image attachments load again. (#62960) Thanks @vincentkoc.
10+
711
## 2026.4.8
812

913
### Fixes

apps/android/app/build.gradle.kts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ android {
6565
applicationId = "ai.openclaw.app"
6666
minSdk = 31
6767
targetSdk = 36
68-
versionCode = 2026040801
69-
versionName = "2026.4.8"
68+
versionCode = 2026040901
69+
versionName = "2026.4.9"
7070
ndk {
7171
// Support all major ABIs — native libs are tiny (~47 KB per ABI)
7272
abiFilters += listOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64")

apps/ios/Config/Version.xcconfig

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// Shared iOS version defaults.
22
// Generated overrides live in build/Version.xcconfig (git-ignored).
33

4-
OPENCLAW_GATEWAY_VERSION = 2026.4.8
5-
OPENCLAW_MARKETING_VERSION = 2026.4.8
6-
OPENCLAW_BUILD_VERSION = 2026040801
4+
OPENCLAW_GATEWAY_VERSION = 2026.4.9
5+
OPENCLAW_MARKETING_VERSION = 2026.4.9
6+
OPENCLAW_BUILD_VERSION = 2026040901
77

88
#include? "../build/Version.xcconfig"

apps/macos/Sources/OpenClaw/Resources/Info.plist

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515
<key>CFBundlePackageType</key>
1616
<string>APPL</string>
1717
<key>CFBundleShortVersionString</key>
18-
<string>2026.4.8</string>
18+
<string>2026.4.9</string>
1919
<key>CFBundleVersion</key>
20-
<string>2026040801</string>
20+
<string>2026040901</string>
2121
<key>CFBundleIconFile</key>
2222
<string>OpenClaw</string>
2323
<key>CFBundleURLTypes</key>

docs/channels/discord.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1003,6 +1003,8 @@ Core examples:
10031003
- moderation: `timeout`, `kick`, `ban`
10041004
- presence: `setPresence`
10051005

1006+
The `event-create` action accepts an optional `image` parameter (URL or local file path) to set the scheduled event cover image.
1007+
10061008
Action gates live under `channels.discord.actions.*`.
10071009

10081010
Default gate behavior:

docs/concepts/dreaming.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ These phases are internal implementation details, not separate user-configured
4242
Light phase ingests recent daily memory signals and recall traces, dedupes them,
4343
and stages candidate lines.
4444

45-
- Reads from short-term recall state and recent daily memory files.
45+
- Reads from short-term recall state, recent daily memory files, and redacted session transcripts when available.
4646
- Writes a managed `## Light Sleep` block when storage includes inline output.
4747
- Records reinforcement signals for later deep ranking.
4848
- Never writes to `MEMORY.md`.
@@ -66,6 +66,13 @@ REM phase extracts patterns and reflective signals.
6666
- Records REM reinforcement signals used by deep ranking.
6767
- Never writes to `MEMORY.md`.
6868

69+
## Session transcript ingestion
70+
71+
Dreaming can ingest redacted session transcripts into the dreaming corpus. When
72+
transcripts are available, they are fed into the light phase alongside daily
73+
memory signals and recall traces. Personal and sensitive content is redacted
74+
before ingestion.
75+
6976
## Dream Diary
7077

7178
Dreaming also keeps a narrative **Dream Diary** in `DREAMS.md`.

docs/gateway/configuration-reference.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1156,6 +1156,20 @@ Optional CLI backends for text-only fallback runs (no tool calls). Useful as a b
11561156
- Sessions supported when `sessionArg` is set.
11571157
- Image pass-through supported when `imageArg` accepts file paths.
11581158

1159+
### `agents.defaults.systemPromptOverride`
1160+
1161+
Replace the entire OpenClaw-assembled system prompt with a fixed string. Set at the default level (`agents.defaults.systemPromptOverride`) or per agent (`agents.list[].systemPromptOverride`). Per-agent values take precedence; an empty or whitespace-only value is ignored. Useful for controlled prompt experiments.
1162+
1163+
```json5
1164+
{
1165+
agents: {
1166+
defaults: {
1167+
systemPromptOverride: "You are a helpful assistant.",
1168+
},
1169+
},
1170+
}
1171+
```
1172+
11591173
### `agents.defaults.heartbeat`
11601174

11611175
Periodic heartbeat runs.
@@ -1168,6 +1182,7 @@ Periodic heartbeat runs.
11681182
every: "30m", // 0m disables
11691183
model: "openai/gpt-5.4-mini",
11701184
includeReasoning: false,
1185+
includeSystemPromptSection: true, // default: true; false omits the Heartbeat section from the system prompt
11711186
lightContext: false, // default: false; true keeps only HEARTBEAT.md from workspace bootstrap files
11721187
isolatedSession: false, // default: false; true runs each heartbeat in a fresh session (no conversation history)
11731188
session: "main",
@@ -1184,6 +1199,7 @@ Periodic heartbeat runs.
11841199
```
11851200

11861201
- `every`: duration string (ms/s/m/h). Default: `30m` (API-key auth) or `1h` (OAuth auth). Set to `0m` to disable.
1202+
- `includeSystemPromptSection`: when false, omits the Heartbeat section from the system prompt and skips `HEARTBEAT.md` injection into bootstrap context. Default: `true`.
11871203
- `suppressToolErrorWarnings`: when true, suppresses tool error warning payloads during heartbeat runs.
11881204
- `directPolicy`: direct/DM delivery policy. `allow` (default) permits direct-target delivery. `block` suppresses direct-target delivery and emits `reason=dm-blocked`.
11891205
- `lightContext`: when true, heartbeat runs use lightweight bootstrap context and keep only `HEARTBEAT.md` from workspace bootstrap files.

docs/plugins/sdk-overview.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -387,13 +387,13 @@ AI CLI backend such as `codex-cli`.
387387

388388
### Exclusive slots
389389

390-
| Method | What it registers |
391-
| ------------------------------------------ | ------------------------------------- |
392-
| `api.registerContextEngine(id, factory)` | Context engine (one active at a time) |
393-
| `api.registerMemoryCapability(capability)` | Unified memory capability |
394-
| `api.registerMemoryPromptSection(builder)` | Memory prompt section builder |
395-
| `api.registerMemoryFlushPlan(resolver)` | Memory flush plan resolver |
396-
| `api.registerMemoryRuntime(runtime)` | Memory runtime adapter |
390+
| Method | What it registers |
391+
| ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
392+
| `api.registerContextEngine(id, factory)` | Context engine (one active at a time). The `assemble()` callback receives `availableTools` and `citationsMode` so the engine can tailor prompt additions. |
393+
| `api.registerMemoryCapability(capability)` | Unified memory capability |
394+
| `api.registerMemoryPromptSection(builder)` | Memory prompt section builder |
395+
| `api.registerMemoryFlushPlan(resolver)` | Memory flush plan resolver |
396+
| `api.registerMemoryRuntime(runtime)` | Memory runtime adapter |
397397

398398
### Memory embedding adapters
399399

docs/providers/google.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,9 @@ Gemini CLI JSON usage notes:
9898
| Video understanding | Yes |
9999
| Web search (Grounding) | Yes |
100100
| Thinking/reasoning | Yes (Gemini 3.1+) |
101+
| Gemma 4 models | Yes |
102+
103+
Gemma 4 models (for example `gemma-4-26b-a4b-it`) support thinking mode. OpenClaw rewrites `thinkingBudget` to a supported Google `thinkingLevel` for Gemma 4. Setting thinking to `off` preserves thinking disabled instead of mapping to `MINIMAL`.
101104

102105
## Direct Gemini cache reuse
103106

docs/providers/ollama.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,8 @@ openclaw models set ollama/gemma4
119119
When you set `OLLAMA_API_KEY` (or an auth profile) and **do not** define `models.providers.ollama`, OpenClaw discovers models from the local Ollama instance at `http://127.0.0.1:11434`:
120120

121121
- Queries `/api/tags`
122-
- Uses best-effort `/api/show` lookups to read `contextWindow` when available
122+
- Uses best-effort `/api/show` lookups to read `contextWindow` and detect capabilities (including vision) when available
123+
- Models with a `vision` capability reported by `/api/show` are marked as image-capable (`input: ["text", "image"]`), so OpenClaw auto-injects images into the prompt for those models
123124
- Marks `reasoning` with a model-name heuristic (`r1`, `reasoning`, `think`)
124125
- Sets `maxTokens` to the default Ollama max-token cap used by OpenClaw
125126
- Sets all costs to `0`

0 commit comments

Comments
 (0)