Skip to content

Commit bc5d533

Browse files
committed
Merge remote-tracking branch 'origin/main' into wolf/update-preserve-newer-plugin-pins
2 parents 15bb35d + 119dc4b commit bc5d533

85 files changed

Lines changed: 6200 additions & 512 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: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ Automatic fast mode starts short conversations quickly, then returns longer or f
8181

8282
- Prevents [Docker](https://docs.openclaw.ai/install/docker) and [Podman](https://docs.openclaw.ai/install/podman) setup from running unbounded on hosts where GNU timeout is installed as `gtimeout`, so image pulls, builds, and detached startup receive the intended guard. [62b2e9e](https://github.com/openclaw/openclaw/commit/62b2e9ef14b4be6fd396621c8e5e248331f08695).
8383

84-
### Plugins, Packaging, and QA
84+
### Plugins and Packaging
8585

8686
#### Codex service-tier clearing
8787

@@ -96,7 +96,6 @@ Automatic fast mode starts short conversations quickly, then returns longer or f
9696
#### Doctor check ordering
9797

9898
- Keeps core [`openclaw doctor`](https://docs.openclaw.ai/gateway/doctor) diagnostics in their normal order before extension checks, making lint and repair output easier to follow. [PR #86627](https://github.com/openclaw/openclaw/pull/86627). Thanks @giodl73-repo.
99-
10099
## 2026.6.9
101100

102101
### Highlights

apps/shared/OpenClawKit/Sources/OpenClawProtocol/GatewayModels.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7187,24 +7187,28 @@ public struct ChatHistoryParams: Codable, Sendable {
71877187
public let sessionkey: String
71887188
public let agentid: String?
71897189
public let limit: Int?
7190+
public let offset: Int?
71907191
public let maxchars: Int?
71917192

71927193
public init(
71937194
sessionkey: String,
71947195
agentid: String? = nil,
71957196
limit: Int?,
7197+
offset: Int? = nil,
71967198
maxchars: Int?)
71977199
{
71987200
self.sessionkey = sessionkey
71997201
self.agentid = agentid
72007202
self.limit = limit
7203+
self.offset = offset
72017204
self.maxchars = maxchars
72027205
}
72037206

72047207
private enum CodingKeys: String, CodingKey {
72057208
case sessionkey = "sessionKey"
72067209
case agentid = "agentId"
72077210
case limit
7211+
case offset
72087212
case maxchars = "maxChars"
72097213
}
72107214
}

docs/ci.md

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -651,7 +651,16 @@ pnpm crabbox:run -- --provider blacksmith-testbox \
651651
"corepack pnpm test"
652652
```
653653

654-
Read the final JSON summary. The useful fields are `provider`, `leaseId`, `syncDelegated`, `exitCode`, `commandMs`, and `totalMs`. One-shot Blacksmith-backed Crabbox runs should stop the Testbox automatically; if a run is interrupted or cleanup is unclear, inspect live boxes and stop only the boxes you created:
654+
Read the final JSON summary. The useful fields are `provider`, `leaseId`,
655+
`syncDelegated`, `exitCode`, `commandMs`, and `totalMs`. For delegated
656+
Blacksmith Testbox runs, the Crabbox wrapper exit code and JSON summary are the
657+
command result. The linked GitHub Actions run owns hydration and keepalive; it
658+
can finish as `cancelled` when the Testbox is stopped externally after the SSH
659+
command has already returned. Treat that as a cleanup/status artifact unless
660+
the wrapper `exitCode` is non-zero or the command output shows a failed test.
661+
One-shot Blacksmith-backed Crabbox runs should stop the Testbox automatically;
662+
if a run is interrupted or cleanup is unclear, inspect live boxes and stop only
663+
the boxes you created:
655664

656665
```bash
657666
blacksmith testbox list --all

docs/concepts/delegate-architecture.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,8 @@ tool-call XML payloads (including `<tool_call>...</tool_call>`,
297297
downgraded tool-call scaffolding / leaked ASCII/full-width model control
298298
tokens / malformed MiniMax tool-call XML from assistant recall, and can
299299
replace oversized rows with `[sessions_history omitted: message too large]`
300-
instead of returning a raw transcript dump.
300+
instead of returning a raw transcript dump. Use `nextOffset` when present to
301+
page backward through older transcript windows.
301302

302303
## Scaling pattern
303304

docs/concepts/session-tool.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,11 @@ results may be scope-limited.
5858

5959
`sessions_history` fetches the conversation transcript for a specific session.
6060
By default, tool results are excluded -- pass `includeTools: true` to see them.
61+
Use `limit` for the newest bounded tail. Pass `offset: 0` when you need
62+
pagination metadata, then pass returned `nextOffset` values to page backward
63+
through older OpenClaw transcript windows without reading raw transcript files.
64+
Explicit offset pages do not merge external CLI fallback imports; use the
65+
default newest-tail view when you need that merged display history.
6166
The returned view is intentionally bounded and safety-filtered:
6267

6368
- assistant text is normalized before recall:
@@ -78,7 +83,7 @@ The returned view is intentionally bounded and safety-filtered:
7883
- very large histories can drop older rows or replace an oversized row with
7984
`[sessions_history omitted: message too large]`
8085
- the tool reports summary flags such as `truncated`, `droppedMessages`,
81-
`contentTruncated`, `contentRedacted`, and `bytes`
86+
`contentTruncated`, `contentRedacted`, `bytes`, and pagination metadata
8287

8388
Both tools accept either a **session key** (like `"main"`) or a **session ID**
8489
from a previous list call.

docs/nodes/media-understanding.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,7 @@ When `mode: "all"`, outputs are labeled `[Image 1/2]`, `[Audio 2/2]`, etc.
321321
- The injected block uses explicit boundary markers like `<<<EXTERNAL_UNTRUSTED_CONTENT id="...">>>` / `<<<END_EXTERNAL_UNTRUSTED_CONTENT id="...">>>` and includes a `Source: External` metadata line.
322322
- This attachment-extraction path intentionally omits the long `SECURITY NOTICE:` banner to avoid bloating the media prompt; the boundary markers and metadata still remain.
323323
- If a file has no extractable text, OpenClaw injects `[No extractable text]`.
324-
- If a PDF falls back to rendered page images in this path, the media prompt keeps the placeholder `[PDF content rendered to images; images not forwarded to model]` because this attachment-extraction step forwards text blocks, not the rendered PDF images.
324+
- If a PDF falls back to rendered page images in this path, OpenClaw forwards those page images to vision-capable reply models and keeps the placeholder `[PDF content rendered to images]` in the file block.
325325

326326
</Accordion>
327327
</AccordionGroup>

docs/platforms/mac/bundled-gateway.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,34 @@ Logging:
5757
The macOS app checks the gateway version against its own version. If they're
5858
incompatible, update the global CLI to match the app version.
5959

60+
## State directory on macOS
61+
62+
Keep OpenClaw state on a local, non-synced disk. Avoid iCloud Drive and other
63+
cloud-synced folders because sync latency and file locks can affect sessions,
64+
credentials, and Gateway state.
65+
66+
Set `OPENCLAW_STATE_DIR` to a local path only when you need an override.
67+
`openclaw doctor` warns about common cloud-synced state paths and recommends
68+
moving back to local storage. See
69+
[environment variables](/help/environment#path-related-env-vars) and
70+
[Doctor](/gateway/doctor).
71+
72+
## Debug app connectivity
73+
74+
Use the macOS debug CLI from a source checkout to exercise the same Gateway
75+
WebSocket handshake and discovery logic the app uses:
76+
77+
```bash
78+
cd apps/macos
79+
swift run openclaw-mac connect --json
80+
swift run openclaw-mac discover --timeout 3000 --json
81+
```
82+
83+
`connect` accepts `--url`, `--token`, `--timeout`, and `--json`. `discover`
84+
accepts `--timeout`, `--json`, and `--include-local`. Compare discovery output
85+
with `openclaw gateway discover --json` when you need to separate CLI discovery
86+
from app-side connection issues.
87+
6088
## Smoke check
6189

6290
```bash

docs/platforms/mac/canvas.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,18 @@ Example (in JS):
114114
window.location.href = "openclaw://agent?message=Review%20this%20design";
115115
```
116116

117-
The app prompts for confirmation unless a valid key is provided.
117+
Supported query parameters:
118+
119+
- `message`: prefilled agent prompt.
120+
- `sessionKey`: stable session identifier.
121+
- `thinking`: optional thinking profile.
122+
- `deliver`, `to`, or `channel`: delivery target.
123+
- `timeoutSeconds`: optional run timeout.
124+
- `key`: app-generated safety token for trusted local callers.
125+
126+
The app prompts for confirmation unless a valid key is provided. Unkeyed links
127+
show the message and URL before approval, and ignore delivery routing fields;
128+
keyed links use the normal Gateway run path.
118129

119130
## Security notes
120131

docs/platforms/mac/remote.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ In SSH tunnel mode, discovered LAN/tailnet hostnames are saved as
2424
`gateway.remote.sshTarget`. The app keeps `gateway.remote.url` on the local
2525
tunnel endpoint, for example `ws://127.0.0.1:18789`, so CLI, Web Chat, and
2626
the local node-host service all use the same safe loopback transport.
27+
When discovery returns both raw Tailnet IPs and stable hostnames, the app
28+
prefers Tailscale MagicDNS or LAN names so remote connections survive address
29+
changes better.
2730
If the local tunnel port differs from the remote gateway port, set
2831
`gateway.remote.remotePort` to the port on the remote host.
2932

docs/platforms/mac/xpc.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ title: "macOS IPC"
2121

2222
- The app runs the Gateway (local mode) and connects to it as a node.
2323
- Agent actions are performed via `node.invoke` (e.g. `system.run`, `system.notify`, `canvas.*`).
24+
- Common Mac node commands include `canvas.*`, `camera.snap`, `camera.clip`,
25+
`screen.snapshot`, `screen.record`, `system.run`, and `system.notify`.
26+
- The node reports a `permissions` map so agents can see whether screen,
27+
camera, microphone, speech, automation, or accessibility access is available.
2428

2529
### Node service + app IPC
2630

0 commit comments

Comments
 (0)