Peter Steinberger
201420a7ee
fix: harden secret-file readers
2026-03-10 23:40:10 +00:00
David Guttman
b517dc089a
feat(discord): add autoArchiveDuration config option ( #35065 )
...
* feat(discord): add autoArchiveDuration config option
Add config option to control auto-archive duration for auto-created threads:
- autoArchiveDuration: 60 (default), 1440, 4320, or 10080
- Sets archive duration in minutes (1hr/1day/3days/1week)
- Accepts both string and numeric values
- Discord's default was 60 minutes (hardcoded)
Example config:
```yaml
channels:
discord:
guilds:
GUILD_ID:
channels:
CHANNEL_ID:
autoThread: true
autoArchiveDuration: 10080 # 1 week
```
* feat(discord): add autoArchiveDuration changelog entry (#35065 ) (thanks @davidguttman)
---------
Co-authored-by: Onur <onur@textcortex.com>
2026-03-10 23:13:24 +01:00
Peter Steinberger
6d4241cbd9
fix: wire modelstudio env discovery ( #40634 ) (thanks @pomelo-nwu)
2026-03-10 19:58:43 +00:00
Josh Avant
d30dc28b8c
Secrets: reject exec SecretRef traversal ids across schema/runtime/gateway ( #42370 )
...
* Secrets: harden exec SecretRef validation and reload LKG coverage
* Tests: harden exec fast-exit stdin regression case
* Tests: align lifecycle daemon test formatting with oxfmt 0.36
2026-03-10 13:45:37 -05:00
Echo
bda63c3c7f
fix(mattermost): preserve markdown formatting and native tables ( #18655 )
...
Merged via squash.
Prepared head SHA: d30fff1776ba94da0b68e5610248829c05450572
Co-authored-by: echo931 <259437483+echo931@users.noreply.github.com>
Co-authored-by: mukhtharcm <56378562+mukhtharcm@users.noreply.github.com>
Reviewed-by: @mukhtharcm
2026-03-10 17:40:01 +05:30
Josh Avant
f0eb67923c
fix(secrets): resolve web tool SecretRefs atomically at runtime
2026-03-09 22:57:03 -05:00
Harold Hunt
de49a8b72c
Telegram: exec approvals for OpenCode/Codex ( #37233 )
...
Merged via squash.
Prepared head SHA: f2433790941841ade0efe6292ff4909b2edd6f18
Co-authored-by: huntharo <5617868+huntharo@users.noreply.github.com>
Co-authored-by: huntharo <5617868+huntharo@users.noreply.github.com>
Reviewed-by: @huntharo
2026-03-09 23:04:35 -04:00
opriz
51bae75120
fix(kimi-coding): fix kimi tool format: use native Anthropic tool schema instead of OpenAI … (openclaw#40008)
...
Verified:
- pnpm install --frozen-lockfile
- pnpm build
- pnpm check
- pnpm test:macmini
Co-authored-by: opriz <51957849+opriz@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-03-09 08:28:47 -05:00
Kesku
adec8b28bb
alphabetize web search providers ( #40259 )
...
Merged via squash.
Prepared head SHA: be6350e5ae1c0610f813483dca0a5c98813a7f8e
Co-authored-by: kesku <62210496+kesku@users.noreply.github.com>
Co-authored-by: obviyus <22031114+obviyus@users.noreply.github.com>
Reviewed-by: @obviyus
2026-03-09 08:54:54 +05:30
bbblending
4ff4ed7ec9
fix(config): refresh runtime snapshot from disk after write. Fixes #37175 ( #37313 )
...
Merged via squash.
Prepared head SHA: 69e1861abf97d20c787a790d37e68c9e3ae2cb1d
Co-authored-by: bbblending <122739024+bbblending@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-03-08 19:49:15 -04:00
Peter Steinberger
d3111fbbcb
fix: make browser relay bind address configurable ( #39364 ) (thanks @mvanhorn)
2026-03-08 19:15:21 +00:00
Matt Van Horn
e883d0b556
fix(browser): add IP validation, fix upgrade handler for non-loopback bind
...
- Zod schema: validate relayBindHost with ipv4/ipv6 instead of bare string
- Upgrade handler: allow non-loopback connections when bindHost is explicitly
non-loopback (e.g. 0.0.0.0 for WSL2), keeping loopback-only default
- Test: verify actual bind address via relay.bindHost instead of just checking
reachability on 127.0.0.1 which passes regardless
- Expose bindHost on ChromeExtensionRelayServer type for inspection
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 19:15:21 +00:00
Matt Van Horn
436ae8a07c
fix(infra): make browser relay bind address configurable
...
Add browser.relayBindHost config option so the Chrome extension relay
server can bind to a non-loopback address (e.g. 0.0.0.0 for WSL2).
Defaults to 127.0.0.1 when unset, preserving current behavior.
Closes #39214
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 19:15:21 +00:00
Mariano
404b1527e6
fix(acp): persist spawned child session history ( #40137 )
...
Merged via squash.
Prepared head SHA: 62de5d56691e1fd185cc617bb5e7283a14ce90b0
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com>
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com>
Reviewed-by: @mbelinky
2026-03-08 19:37:00 +01:00
Peter Steinberger
749eb4efea
refactor: thread config runtime env through models config
2026-03-08 18:26:35 +00:00
Peter Steinberger
e5c06dd64a
refactor: use model compat for anthropic tool payload normalization
2026-03-08 18:26:35 +00:00
GitBuck
caf1b84822
feat: allow compaction model override via config ( #38753 )
...
Merged via squash.
Prepared head SHA: a3d6d6c845c9ef492370c4cc12ea790ca92123f0
Co-authored-by: starbuck100 <25417736+starbuck100@users.noreply.github.com>
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Reviewed-by: @jalehman
2026-03-08 10:47:34 -07:00
Peter Steinberger
b7ad8fd661
fix: fail closed talk provider selection
2026-03-08 16:22:48 +00:00
Ayaan Zaidi
28e46d04e5
fix(web-search): restore OpenRouter compatibility for Perplexity ( #39937 ) ( #39937 )
2026-03-08 20:37:54 +05:30
Tak Hoffman
d9e8e8ac15
fix: resolve live config paths in status and gateway metadata ( #39952 )
...
* fix: resolve live config paths in status and gateway metadata
* fix: resolve remaining runtime config path references
* test: cover gateway config.set config path response
2026-03-08 09:59:32 -05:00
Peter Steinberger
e8ad80afc7
test: cover invalid talk config inputs
2026-03-08 14:58:29 +00:00
Peter Steinberger
b4c8950417
refactor: centralize talk silence timeout defaults
2026-03-08 14:58:29 +00:00
Peter Steinberger
4e2290b841
refactor: add canonical talk config payload
2026-03-08 14:58:29 +00:00
dano does design
6ff7e8f42e
talk: add configurable silence timeout
2026-03-08 14:30:25 +00:00
Peter Steinberger
acac7e3132
fix: land Brave llm-context gaps ( #33383 ) (thanks @thirumaleshp)
2026-03-08 13:57:12 +00:00
Thirumalesh
8a1015f1aa
feat: add Brave Search LLM Context API mode for web_search
...
Add support for Brave's LLM Context API endpoint (/res/v1/llm/context)
as an optional mode for the web_search tool. When configured with
tools.web.search.brave.mode set to llm-context, the tool returns
pre-extracted page content optimized for LLM grounding instead of
standard URL/snippet results.
The llm-context cache key excludes count and ui_lang parameters that
the LLM Context API does not accept, preventing unnecessary cache
misses.
Closes #14992
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-08 13:57:12 +00:00
gambletan
e5fdfec9dc
fix(config): accept "openclaw" as browser profile driver in Zod schema ( #39374 )
...
Merged via squash.
Prepared head SHA: 0eba5ab939e8074e44fe45dcb76e1a021d74156b
Co-authored-by: gambletan <266203672+gambletan@users.noreply.github.com>
Co-authored-by: altaywtf <9790196+altaywtf@users.noreply.github.com>
Reviewed-by: @altaywtf
2026-03-08 12:04:49 +03:00
Peter Steinberger
59102a1ff7
fix: add gemini 3.1 flash-lite support
2026-03-08 05:12:48 +00:00
Shadow
d902bae554
fix(discord): validate agentComponents config
2026-03-07 21:08:36 -06:00
Peter Steinberger
2646739d23
refactor: centralize strict numeric parsing
2026-03-08 03:02:25 +00:00
Peter Steinberger
100da9f45c
fix: correct gemini flash model id
2026-03-08 02:32:58 +00:00
Peter Steinberger
9d7d961db8
fix: restore Telegram webhook-mode health after restarts
...
Landed from contributor PR #39313 by @fellanH.
Co-authored-by: Felix Hellström <30758862+fellanH@users.noreply.github.com>
2026-03-08 02:27:18 +00:00
Vincent Koc
2c7fb54956
Config: fail closed invalid config loads ( #39071 )
...
* Config: fail closed invalid config loads
* CLI: keep diagnostics on explicit best-effort config
* Tests: cover invalid config best-effort diagnostics
* Changelog: note invalid config fail-closed fix
* Status: pass best-effort config through status-all gateway RPCs
* CLI: pass config through gateway secret RPC
* CLI: skip plugin loading from invalid config
* Tests: align daemon token drift env precedence
2026-03-07 17:48:13 -08:00
Peter Steinberger
8cc477b873
refactor(sessions): simplify provider normalizer matching
2026-03-08 01:27:05 +00:00
Peter Steinberger
ad7399b6e6
refactor(sessions): add provider key normalizers
2026-03-08 01:17:06 +00:00
Peter Steinberger
74e3c071b2
refactor(discord): extract session key normalization
2026-03-08 01:15:29 +00:00
Peter Steinberger
cf1c2cc208
fix(discord): normalize DM session keys
2026-03-08 01:06:09 +00:00
Peter Steinberger
f53e10e3fd
fix(config): fail closed on invalid config load ( #9040 , thanks @joetomasone)
...
Land #9040 by @joetomasone. Add fail-closed config loading, compat coverage, and changelog entry for #5052 .
Co-authored-by: Joe Tomasone <joe@tomasone.com>
2026-03-07 22:39:26 +00:00
Peter Steinberger
7649712356
fix(config): degrade gracefully on missing env vars ( #39050 , thanks @akz142857)
...
Co-authored-by: ziy <ziyang.liu@wahool.com>
2026-03-07 21:12:26 +00:00
Peter Steinberger
92f5a2e252
fix(models): refresh gpt/gemini alias defaults ( #38638 , thanks @ademczuk)
...
Co-authored-by: ademczuk <andrew.demczuk@gmail.com>
2026-03-07 21:10:58 +00:00
Peter Steinberger
cf290e31bd
fix(voice-call): align plugin manifest schema with runtime config fields ( #38892 )
...
Co-authored-by: giumex <giuliano.messina@gmail.com>
2026-03-07 19:49:58 +00:00
Peter Steinberger
4c2cb73055
fix(config): sanitize validation log output to prevent control character injection ( #39116 )
...
Co-authored-by: Bill <gsamzn@gmail.com>
2026-03-07 19:41:59 +00:00
Peter Steinberger
143eca8e86
refactor: dedupe runtime snapshot test fixtures
2026-03-07 19:02:01 +00:00
Vincent Koc
e4d80ed556
CI: restore main detect-secrets scan ( #38438 )
...
* Tests: stabilize detect-secrets fixtures
* Tests: fix rebased detect-secrets false positives
* Docs: keep snippets valid under detect-secrets
* Tests: finalize detect-secrets false-positive fixes
* Tests: reduce detect-secrets false positives
* Tests: keep detect-secrets pragmas inline
* Tests: remediate next detect-secrets batch
* Tests: tighten detect-secrets allowlists
* Tests: stabilize detect-secrets formatter drift
2026-03-07 10:06:35 -08:00
Josh Avant
8e20dd22d8
Secrets: harden SecretRef-safe models.json persistence ( #38955 )
2026-03-07 11:28:39 -06:00
Rodrigo Uroz
4c0b873a4d
Config/Compaction: expose safeguard preserve and quality settings ( #25557 )
...
Merged via squash.
Prepared head SHA: ea9904039a35d8d9ced55cd6d1c459a46666954d
Co-authored-by: rodrigouroz <384037+rodrigouroz@users.noreply.github.com>
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Reviewed-by: @jalehman
2026-03-07 07:13:13 -08:00
Ayaan Zaidi
9e1de97a69
fix(telegram): route native topic commands to the active session ( #38871 )
...
* fix(telegram): resolve session entry for /stop in forum topics
Fixes #38675
- Export normalizeStoreSessionKey from store.ts for reuse
- Use it in resolveSessionEntryForKey so topic session keys (lowercase
in store) are found when handling /stop
- Add test for forum topic session key lookup
* fix(telegram): share native topic routing with inbound messages
* fix: land telegram topic routing follow-up (#38871 )
---------
Co-authored-by: xialonglee <li.xialong@xydigit.com>
2026-03-07 19:01:16 +05:30
Peter Steinberger
3c71e2bd48
refactor(core): extract shared dedup helpers
2026-03-07 10:41:05 +00:00
Vincent Koc
ba9eaf2ee2
fix(media): retain inbound media with recursive cleanup TTL ( #38292 )
...
* Config: add media retention TTL setting
* Media: recurse persisted media cleanup
* Gateway: add persisted media cleanup timer
* Media: harden retention cleanup sweep
* Media: make recursive retention cleanup opt-in
* Media: retry writes after empty-dir cleanup race
2026-03-06 22:06:09 -05:00
Vincent Koc
42e3d8d693
Secrets: add inline allowlist review set ( #38314 )
...
* Secrets: add inline allowlist review set
* Secrets: narrow detect-secrets file exclusions
* Secrets: exclude Docker fingerprint false positive
* Secrets: allowlist test and docs false positives
* Secrets: refresh baseline after allowlist updates
* Secrets: fix gateway chat fixture pragma
* Secrets: format pre-commit config
* Android: keep talk mode fixture JSON valid
* Feishu: rely on client timeout injection
* Secrets: allowlist provider auth test fixtures
* Secrets: allowlist onboard search fixtures
* Secrets: allowlist onboard mode fixture
* Secrets: allowlist gateway auth mode fixture
* Secrets: allowlist APNS wake test key
* Secrets: allowlist gateway reload fixtures
* Secrets: allowlist moonshot video fixture
* Secrets: allowlist auto audio fixture
* Secrets: allowlist tiny audio fixture
* Secrets: allowlist embeddings fixtures
* Secrets: allowlist resolve fixtures
* Secrets: allowlist target registry pattern fixtures
* Secrets: allowlist gateway chat env fixture
* Secrets: refresh baseline after fixture allowlists
* Secrets: reapply gateway chat env allowlist
* Secrets: reapply gateway chat env allowlist
* Secrets: stabilize gateway chat env allowlist
* Secrets: allowlist runtime snapshot save fixture
* Secrets: allowlist oauth profile fixtures
* Secrets: allowlist compaction identifier fixture
* Secrets: allowlist model auth fixture
* Secrets: allowlist model status fixtures
* Secrets: allowlist custom onboarding fixture
* Secrets: allowlist mattermost token summary fixtures
* Secrets: allowlist gateway auth suite fixtures
* Secrets: allowlist channel summary fixture
* Secrets: allowlist provider usage auth fixtures
* Secrets: allowlist media proxy fixture
* Secrets: allowlist secrets audit fixtures
* Secrets: refresh baseline after final fixture allowlists
* Feishu: prefer explicit client timeout
* Feishu: test direct timeout precedence
2026-03-06 19:35:26 -05:00