Peter Steinberger
29b165e456
refactor: centralize node startup tls planning
2026-03-21 15:58:42 -07:00
Vincent Koc
5b31b3400e
refactor(doctor): continue provider and shared extractions ( #51905 )
...
* refactor(doctor): extract empty allowlist scanning
* refactor(doctor): extract matrix provider helpers
* refactor(doctor): extract matrix repair orchestration
2026-03-21 15:57:08 -07:00
Vincent Koc
5024967e57
fix(core): trim inbound startup churn ( #51899 )
...
* perf(core): narrow sandbox status imports for error helpers
* fix(core): trim inbound startup churn
* fix(auth): expire cached external cli sync state
* test(auth): avoid mtime sleep race in cache test
2026-03-21 15:55:19 -07:00
Vincent Koc
d88c68fec1
perf(core): narrow sandbox status imports for error helpers ( #51897 )
...
* perf(core): narrow sandbox status imports for error helpers
* fix(build): add runtime boundaries for reply understanding
Add missing lazy-load runtime shim files required by get-reply.ts.
* fix(debug): remove duplicate spacing in ingress logs
Use logIngressStage suffix spacing consistently for media and link understanding debug lines.
2026-03-21 15:40:45 -07:00
Vincent Koc
d3731be2f0
fix(config): use discord runtime api defaults
2026-03-21 15:21:42 -07:00
Gustavo Madeira Santana
5b3fce4c85
Outbound: preserve routed audioAsVoice delivery
2026-03-21 15:14:37 -07:00
Vincent Koc
21544f9e53
fix(doctor): harden follow-up repair paths ( #51888 )
...
* fix(doctor): harden follow-up repair paths
* fix(doctor): sanitize remaining warning paths
2026-03-21 15:11:01 -07:00
Vincent Koc
825d82b5c9
test(guardrails): use telegram public api in outbound targets
2026-03-21 15:08:43 -07:00
Vincent Koc
99641f01a5
perf(auth): reduce plugin auth cold-start heap ( #51891 )
...
* fix(test): recycle unit-fast ci batches
* refactor(config): narrow discord timeout import
* test(outbound): lighten target plugin stubs
* refactor(auth): narrow env api key resolution
* docs(auth): restore anthropic vertex sentinel comment
* refactor(auth): isolate console sanitizer
2026-03-21 15:07:08 -07:00
Vincent Koc
805aaa4ee8
fix(agents): avoid model catalog startup tax on telegram replies
2026-03-21 15:03:55 -07:00
Vincent Koc
5069c771e7
fix(test): recycle unit-fast CI batches ( #51884 )
...
* fix(test): recycle unit-fast ci batches
* refactor(config): narrow discord timeout import
* test(outbound): lighten target plugin stubs
* refactor(auth): narrow env api key resolution
* docs(auth): restore anthropic vertex sentinel comment
2026-03-21 14:56:29 -07:00
Vincent Koc
039ea5998e
refactor(doctor): continue extracting shared doctor helpers ( #51876 )
...
* refactor(doctor): extract exec safe-bin helpers
* refactor(doctor): extract legacy tools-by-sender helpers
* refactor(doctor): extract default account warnings
* refactor(doctor): reuse canonical config path helpers
2026-03-21 14:28:14 -07:00
Bob
c2634b5e40
Agents: raise default timeout to 48h ( #51874 )
2026-03-21 21:54:46 +01:00
Peter Steinberger
4229ffe2b9
perf: reduce runtime and test startup overhead
2026-03-21 20:18:16 +00:00
Zhenye Dong
80959219ce
fix(update): make up-to-date package status explicit ( #51409 )
...
Merged via squash.
Prepared head SHA: 75aba35882
Co-authored-by: dongzhenye <5765843+dongzhenye@users.noreply.github.com>
Co-authored-by: mcaxtr <7562095+mcaxtr@users.noreply.github.com>
Reviewed-by: @mcaxtr
2026-03-21 17:17:14 -03:00
Peter Steinberger
bfcfc17a8b
refactor: tighten plugin sdk entry surface
2026-03-21 20:08:01 +00:00
Peter Steinberger
c29ba9d21a
fix(docs): handle anchors in docs link audit
2026-03-21 19:58:36 +00:00
Bob
8cac327c19
ACP: recover hung bound turns ( #51816 )
...
* ACP: add hung-turn starvation repro
* ACP: recover hung bound turns
* ACP: preserve timed-out session handles
---------
Co-authored-by: Onur <2453968+osolmaz@users.noreply.github.com>
2026-03-21 20:54:30 +01:00
samzong
5c05347d11
fix(compaction): make compaction guard content-aware to prevent false cancellations in heartbeat sessions ( #42119 )
...
Merged via squash.
Prepared head SHA: 3429643315
Co-authored-by: samzong <13782141+samzong@users.noreply.github.com>
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Reviewed-by: @jalehman
2026-03-21 12:27:35 -07:00
Menglin Li
ef7a5c3546
fix: use content hash for memory flush dedup instead of compactionCount ( #30115 ) ( #34222 )
...
Merged via squash.
Prepared head SHA: bce6f0bda0
Co-authored-by: lml2468 <39320777+lml2468@users.noreply.github.com>
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Reviewed-by: @jalehman
2026-03-21 12:06:25 -07:00
Matthew19990919
fb50c98d67
fix(tts): add matrix to VOICE_BUBBLE_CHANNELS ( #37080 )
...
Merged via squash.
Prepared head SHA: 89ca0355d4
Co-authored-by: Matthew19990919 <504525675@qq.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-03-21 11:29:53 -07:00
Jari Mustonen
fd2b3ed6af
feat(memory): pluggable system prompt section for memory plugins ( #40126 )
...
Merged via squash.
Prepared head SHA: 5228d1937f
Co-authored-by: jarimustonen <1272053+jarimustonen@users.noreply.github.com>
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Reviewed-by: @jalehman
2026-03-21 11:20:45 -07:00
Peter Steinberger
ebfc5f8240
fix: detect nvm services from installed command ( #51146 )
2026-03-21 11:06:31 -07:00
Peter Steinberger
40f5305cd2
fix: handle Linux nvm CA env before startup ( #51146 ) (thanks @GodsBoy)
2026-03-21 11:06:31 -07:00
scoootscooob
d6367c2c55
refactor: route Telegram runtime through plugin sdk ( #51772 )
2026-03-21 10:24:56 -07:00
scoootscooob
c0e482f4bd
refactor: route iMessage runtime through plugin sdk ( #51770 )
2026-03-21 10:21:20 -07:00
scoootscooob
6516cfa566
refactor: route Slack runtime through plugin sdk ( #51766 )
2026-03-21 10:11:17 -07:00
Vincent Koc
4e979ea6ca
refactor(doctor): extract provider and shared config helpers ( #51753 )
...
* refactor(doctor): add shared doctor types
* refactor(doctor): add shared allowlist helpers
* refactor(doctor): extract empty allowlist warnings
* refactor(doctor): extract telegram allowfrom scanning
* refactor(doctor): extract telegram allowfrom repair
* refactor(doctor): extract discord id repair
* refactor(doctor): add shared object helpers
* refactor(doctor): extract mutable allowlist scanning
* refactor(doctor): extract open-policy allowfrom repair
* refactor(doctor): extract allowlist policy repair
* fix(doctor): unblock discord provider refactor checks
* refactor(doctor): fix provider layering in shared warnings
2026-03-21 10:09:38 -07:00
Harold Hunt
e24bf22f98
Fix Discord `/codex_resume` picker expiration ( #51260 )
...
Merged via squash.
Prepared head SHA: 76eb184dbe
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-21 12:59:21 -04:00
Vincent Koc
f4227e2787
fix(ci): remove duplicate embedding default export
2026-03-21 09:39:37 -07:00
Vincent Koc
e61835ec5e
fix(ci): restore embedding defaults and plugin boundaries
2026-03-21 09:32:14 -07:00
Pandadadadazxf
2fe0efc9e1
fix: compaction safeguard summary budget ( #27727 )
...
Merged via squash.
Prepared head SHA: a7ab64e394
Co-authored-by: Pandadadadazxf <200469161+Pandadadadazxf@users.noreply.github.com>
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Reviewed-by: @jalehman
2026-03-21 09:27:51 -07:00
Vincent Koc
15fd11032d
fix(status): skip cold-start status probes
2026-03-21 08:59:19 -07:00
Vincent Koc
a267c5d9ae
refactor(doctor): extract telegram provider warnings ( #51704 )
...
* refactor(doctor): extract telegram provider warnings
* docs(changelog): note doctor provider refactor
2026-03-21 08:57:06 -07:00
Vincent Koc
2ead75ea0e
fix(doctor): add telegram first-run guidance
2026-03-21 08:46:28 -07:00
Vincent Koc
7918308b1a
fix(doctor): suppress telegram fresh-install group warning
2026-03-21 08:46:28 -07:00
Vincent Koc
06b4efb1e7
fix(configure): drop duplicate wizard header
2026-03-21 08:41:57 -07:00
Vincent Koc
2e8c8a7ae6
refactor(openai): centralize provider defaults
2026-03-21 08:40:03 -07:00
Vincent Koc
4c4eea97e9
fix(configure): tighten fresh setup provider UX
2026-03-21 08:34:44 -07:00
Vincent Koc
ffce904a10
fix(check): format onboard search test
2026-03-21 08:33:15 -07:00
Vincent Koc
265386cd6b
feat(plugins): register claude bundle commands natively
2026-03-21 08:14:48 -07:00
zidongdesign
2b68d20ab3
feat: notify user when context compaction starts and completes ( #38805 )
...
Merged via squash.
Prepared head SHA: 0f48c1bbf6
Co-authored-by: zidongdesign <81469543+zidongdesign@users.noreply.github.com>
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Reviewed-by: @jalehman
2026-03-21 08:14:29 -07:00
Vincent Koc
1169d51aee
fix(onboarding): clarify web search key copy
2026-03-21 08:13:39 -07:00
Harold Hunt
5eb99a9b50
Infra: unify plugin split runtime state ( #50725 )
...
Merged via squash.
Prepared head SHA: 570b7b9459
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-21 11:00:21 -04:00
Vincent Koc
a3a5cad7d7
fix(onboarding): hide image-only auth providers
2026-03-21 07:42:42 -07:00
scoootscooob
f10d054745
refactor: route discord runtime through plugin sdk ( #51444 )
2026-03-21 07:40:51 -07:00
Echo
11aff6ed72
fix(auth): support remote Codex OAuth manual input ( #51631 )
...
* fix(auth): support remote codex oauth manual input
* fix: support remote Codex OAuth manual input (#51631 ) (thanks @cash-echo-bot)
---------
Co-authored-by: Cash Williams <cashwilliams@gmail.com>
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-03-21 19:40:54 +05:30
fuller-stack-dev
c9449d77b4
feat(gateway): persist webchat inbound images to disk ( #51324 )
...
* feat(gateway): persist webchat inbound images to disk
Images sent via the webchat control UI (chat.send RPC) were parsed into
content blocks but never written to disk, unlike WhatsApp and Telegram
handlers which call saveMediaBuffer(). This caused:
- Images lost after conversation compaction (only existed as ephemeral base64)
- Image editing/generation workflows failing for webchat-origin images
- Incomplete ~/.openclaw/media/inbound/ directory
After parseMessageWithAttachments extracts parsedImages, iterate and
persist each via saveMediaBuffer(buffer, mimeType, 'inbound'). Uses
fire-and-forget (.catch + warn log) so disk I/O never blocks the
chat.send response path.
Fixes #47930
* fix(gateway): address PR review comments on webchat image persistence
- Move saveMediaBuffer calls after sendPolicy/stop/dedupe checks so
rejected or retried requests don't write files to disk (Codex P1)
- Await all saves and collect SavedMedia results into persistedImages
so the persisted paths are available in scope (Greptile P1)
- Preserve Error stack trace in warn log instead of coercing to
toString() (Greptile P2)
- Switch to Promise.all for concurrent writes
* fix(gateway): address remaining review comments on webchat image persistence
- Revert to fire-and-forget pattern (no await) to eliminate race window
where retried requests miss the in-flight guard during image saves
- Remove unused SavedMedia import and persistedImages collection
- Use formatForLog for consistent error logging with stack traces
- Add NOTE comment about path propagation being a follow-up task
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(gateway): gate image persistence to webchat callers and defer base64 decode
* fix: drop unrelated format churn in lifecycle.test.ts
* gateway: clarify image persistence scope covers all chat.send callers
* fix(gateway): use generic chat.send log prefix for image persistence warnings
* fix(gateway): persist chat.send image refs in transcript
* fix(gateway): keep chat.send image refs off visible text
* fix(gateway): persist chat send media refs on dispatch
* fix(gateway): serialize chat send image persistence
* fix(gateway): persist chat send media after dispatch
* fix: persist chat.send inbound images across follow-ups (#51324 ) (thanks @fuller-stack-dev)
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-03-21 19:05:11 +05:30
RichardCao
7bf437402d
fix: trim config validation startup imports ( #51574 )
...
Merged via squash.
Prepared head SHA: 23b235e465
Co-authored-by: RichardCao <4612401+RichardCao@users.noreply.github.com>
Co-authored-by: huntharo <5617868+huntharo@users.noreply.github.com>
Reviewed-by: @huntharo
2026-03-21 09:31:39 -04:00
fuller-stack-dev
5137a51307
feat(github-copilot): resolve any model ID dynamically ( #51325 )
...
* feat(github-copilot): resolve any model ID dynamically instead of only known ones
* refactor(github-copilot): extract model resolution, add reasoning heuristic and tests
* fix(github-copilot): default synthetic models to text-only input
* ci: retrigger checks
* copilot: mark synthetic catch-all models as vision-capable
* fix(github-copilot): anchor reasoning regex, unexport internal constants, add mid-string test
* fix(github-copilot): default synthetic models to text-only input
* fix(github-copilot): restore image input for synthetic models with explanatory comment
* fix(github-copilot): normalize registry lookup casing, add bare o3 test case
* fix: preserve configured overrides for dynamic models
* fix: allow dynamic GitHub Copilot models (#51325 ) (thanks @fuller-stack-dev)
---------
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-03-21 17:37:50 +05:30