1632 Commits

Author SHA1 Message Date
Xubin Ren
d68857bb2d Merge remote-tracking branch 'origin/main' into codex/unified-extension-platform
# Conflicts:
#	docs/configuration.md
2026-07-27 10:36:20 +08:00
chengyongru
b3d3a3e6c3 fix(image): delegate DNS to explicit proxy 2026-07-27 10:06:19 +08:00
chengyongru
d73794bc68 fix(image): honor provider proxy for URL downloads 2026-07-27 10:06:19 +08:00
Xubin Ren
cc3dbbe804 fix(security): block IPv6 unspecified SSRF targets 2026-07-27 10:06:19 +08:00
Xubin Ren
4408cde019 fix(security): harden generated image downloads 2026-07-27 10:06:19 +08:00
Xubin Ren
cf1e801a29 fix(image): align Gemini hints with model capabilities 2026-07-27 03:07:41 +08:00
Xubin Ren
a8604a3172 fix(image): scope Gemini image sizes by model 2026-07-27 03:07:41 +08:00
stupidloud
ef445cc246 fix(image): narrow Gemini Flash aspect-ratio and image-size scoping
Address review feedback that the capability checks were broader than the
documented per-model matrix:

- Drop the extreme aspect ratios (1:4, 4:1, 1:8, 8:1) from the Flash
  allow-list. They are only documented for 3.1 Flash / Flash Lite, so the
  global set could send an unsupported ratio to 2.5 Flash Image or 3.1 Pro
  Image. Keep the ratios common to every Flash image model.
- Identify imageSize support positively via "gemini-3" instead of excluding
  "2.5". The old predicate also matched gemini-2.0-flash-preview-image-
  generation, which (with the default 1K size) altered that model's request
  shape even though only Gemini 3+ image models accept a configurable size.

Add tests for the gemini-2.0 image-size drop and the extreme-ratio drop.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-27 03:07:41 +08:00
stupidloud
4986590bd7 fix(image): pass aspect ratio and size to Gemini Flash image models
The Gemini Flash image path (`generateContent`) dropped both `aspect_ratio`
and `image_size`: `generate()` never forwarded them and
`_generate_gemini_flash` did not accept them, so every request fell back to
1:1 / input-matched output. The Imagen path was unaffected.

Forward the hints and emit them under
`generationConfig.responseFormat.image` per the current Gemini API. Aspect
ratio is validated against the accepted set; `imageSize` is validated against
{512,1K,2K,4K} and only sent to Gemini 3+ image models, since
`gemini-2.5-flash-image` supports only `aspectRatio`.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-27 03:07:41 +08:00
Xubin Ren
b695a7e875 fix(cli): harden quick start OAuth handling 2026-07-27 02:51:04 +08:00
Xubin Ren
a4ec83fb0d fix(cli): scope Codex proxy env resolution 2026-07-27 02:51:04 +08:00
chengyongru
2a1f840ce2 fix(cli): support Codex OAuth in quick start 2026-07-27 02:51:04 +08:00
Xubin Ren
68717937e8 fix(agent): throttle idle scans by default 2026-07-27 02:15:48 +08:00
Andrew Khmylov
7aab7e8830 feat(agent): make idle compaction scan interval configurable
Before this change, idle compaction is triggered every 1 second
if the incoming message stream is idle.
When triggered, it enumerates all session files, loads and parses them,
and then checks their expiration.

This becomes too CPU-intensive, especially on low-power devices like Raspberry Pi.
It's unlikely that you actually need to compact every second over the long time.

This change adds a configurable throttling for idle-compaction.

Default behavior is unchanged.
2026-07-27 02:15:48 +08:00
Xubin Ren
4e2640f2d2 fix(memory): keep failed Dream batches retryable 2026-07-27 02:00:41 +08:00
shixi-li
15e42059bd fix(memory): progress past completed no-op batches 2026-07-27 02:00:41 +08:00
Xubin Ren
b55b76d755 fix(streaming): preserve recovered segments across channels 2026-07-27 01:39:46 +08:00
chengyongru
e6baecafcd fix(agent): close length recovery lifecycle gaps 2026-07-27 01:39:46 +08:00
chengyongru
27a00c7a4f fix(webui): merge length recovery stream segments 2026-07-27 01:39:46 +08:00
chengyongru
1d2ed6e4d2 fix(agent): reset recovery chains across injections
Reset both the recovered segments and retry budget whenever injected input starts a new logical answer. Cover fatal tool-error boundaries and rename the prompt test module so pytest can collect the full suite.
2026-07-27 01:39:46 +08:00
chengyongru
154cbc1974 refactor(agent): trim recovery tail anchor 2026-07-27 01:39:46 +08:00
chengyongru
df2e5b7225 fix(agent): anchor truncated response continuations 2026-07-27 01:39:46 +08:00
chengyongru
b19039f9d0 fix(agent): preserve length-recovered output 2026-07-27 01:39:46 +08:00
Xubin Ren
c1899e2cb4 fix(mcp): decode URI-encoded schema refs 2026-07-27 01:14:41 +08:00
amplifierplus
9aae7485d6 fix(mcp): normalize local schema refs 2026-07-27 01:14:41 +08:00
Xubin Ren
d236883e2d fix(pairing): reject malformed store entries 2026-07-27 00:46:40 +08:00
santhreal
f7bf4c972e fix(pairing): treat null approved/pending maps as empty 2026-07-27 00:46:40 +08:00
Xubin Ren
cf6ca13b6d fix(exec): preserve bwrap workspace masking 2026-07-27 00:31:00 +08:00
yu-xin-c
22e61003f9 test(exec): make bwrap bind tests portable 2026-07-27 00:31:00 +08:00
yu-xin-c
01a11b3980 feat(exec): allow extra bwrap bind roots 2026-07-27 00:31:00 +08:00
Xubin Ren
5d8046deef test(heartbeat): cover ignored unified routes 2026-07-27 00:12:44 +08:00
yu-xin-c
a7a6c26eab fix(heartbeat): route unified sessions to last channel 2026-07-27 00:12:44 +08:00
Xubin Ren
ff379b91cf fix(agent): preserve merged runtime context markers 2026-07-26 23:46:54 +08:00
yu-xin-c
eb93060f95 fix(agent): preserve pending runtime context 2026-07-26 23:46:54 +08:00
santhreal
07c3e02d5c fix(triggers): treat null runHistory as empty when loading triggers 2026-07-26 23:33:28 +08:00
santhreal
1e505ff405 fix(triggers): coerce string lastRunAtMs when loading local triggers 2026-07-26 23:05:19 +08:00
Xubin Ren
a521cf31d9 test(extensions): make marker coverage platform-neutral 2026-07-26 21:35:53 +08:00
chengyongru
d576804f23 feat(channels): enable tool hints by default 2026-07-26 21:22:12 +08:00
Xubin Ren
0b81858378 fix(extensions): harden compatibility and lifecycle 2026-07-26 21:19:29 +08:00
Xubin Ren
41bebdcdb5 feat(extensions): add first-class WebUI management 2026-07-26 21:19:29 +08:00
Xubin Ren
55e497be14 feat(extensions): add management CLI 2026-07-26 21:19:29 +08:00
Xubin Ren
83b54212ae feat(extensions): wire runtime management and marketplace 2026-07-26 21:19:29 +08:00
Xubin Ren
6e0950833a feat(extensions): enforce dependencies and permission grants 2026-07-26 21:19:29 +08:00
Xubin Ren
012c7ce034 feat(extensions): load published OpenClaw runtimes 2026-07-26 21:19:29 +08:00
Xubin Ren
76d7a33b3b feat(extensions): install compatible packages atomically 2026-07-26 21:19:29 +08:00
Xubin Ren
0cd091ba93 feat(extensions): activate packages transactionally 2026-07-26 21:19:29 +08:00
Xubin Ren
029f9bc53b feat(extensions): add Pi and OpenClaw sidecar protocol 2026-07-26 21:19:29 +08:00
Xubin Ren
1e573c75ae feat(extensions): project native capabilities into catalog 2026-07-26 21:19:29 +08:00
Xubin Ren
863b02d215 feat(extensions): add manifest discovery and policy config 2026-07-26 21:19:29 +08:00
Xubin Ren
336b2876d4 feat(extensions): add unified manifest and registry 2026-07-26 21:19:29 +08:00