Commit Graph

17852 Commits

Author SHA1 Message Date
Peter Steinberger ca11c4902d fix(discord): retry safe webhook and reaction requests (#116821)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 05:21:42 -07:00
Vincent Koc d8f229f2e6 Merge pull request #116735 from vincentkoc/fix/openai-preconnect-lifecycle
* commit 'b218adb7a7d931927aa7fd577f40b31ecc113c3b':
  chore(openai): drop release-owned changelog entry
  fix(openai): narrow idle lifecycle cancellation
  fix(openai): discard preconnect audio on close
  fix(openai): terminalize preconnect lifecycle
2026-07-31 20:18:48 +08:00
Peter Steinberger b9e55935f8 fix(telegram): preserve edit previews, message cache, and group history (#116818)
* test(telegram): cover edited message preview and cache ownership

* fix(telegram): preserve edit previews and refresh message context

* fix(telegram): keep edited messages out of new group history

---------

Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 05:13:01 -07:00
Peter Steinberger a91d92796f fix(whatsapp): preserve interactive replies and normalize media MIME (#116816)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 05:11:15 -07:00
wangmiao0668000666 7af2bb6262 fix(file-transfer): keep fetched media attachable in sandboxed replies (#116400)
Fixes #116338

Co-authored-by: wangmiao0668000666 <wang.miao86@xydigit.com>
2026-07-31 20:09:28 +08:00
Peter Steinberger 410c163328 fix(browser): preserve doctor JSON failure status (#116811)
* fix(browser): preserve doctor JSON exit status

* fix(browser): defer doctor failure exit

* test(browser): harden doctor JSON assertions
2026-07-31 05:08:22 -07:00
Peter Steinberger c2b0def137 fix(ollama): stream native tool call lifecycle (#116809)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 05:08:10 -07:00
Peter Steinberger f061b82d11 fix(matrix): preserve message-tool room thread routing (#116802)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 05:05:16 -07:00
Peter Steinberger 4d7d710c48 fix(qa-channel): enforce message and thread lifecycle ownership (#116801)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 04:56:07 -07:00
Peter Steinberger 4ec46e0ff1 fix(qa-lab): support groups and isolate thread timelines (#116803)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 04:54:03 -07:00
Vincent Koc eb55c8ea8f feat(plugins): externalize Voyage embeddings (#116785)
* feat(voyage): externalize embedding provider

* fix(voyage): drop stale bundled description
2026-07-31 19:52:33 +08:00
Peter Steinberger 754fddbc79 fix(anthropic-vertex): correct multi-region endpoints (#116757)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 04:50:24 -07:00
Peter Steinberger 1a0fde18d6 fix(commands): validate native settings and preserve Telegram ingress outcomes (#116773)
* fix(commands): validate native directives and preserve Telegram outcomes

* test(commands): isolate native directive fast runtime

---------

Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 04:36:54 -07:00
Peter Steinberger fe14ad282c fix(mistral): preserve final realtime transcripts (#116774)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 04:33:47 -07:00
Peter Steinberger 0d40cfbb53 fix(google): surface blocked Gemini prompts (#116756)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 04:29:06 -07:00
Peter Steinberger 59e1d58614 fix(discord): preserve forum delivery identity and actionable failures (#116750)
* fix(discord): preserve forum thread delivery and receipts

* refactor(discord): centralize forum delivery receipt aggregation

---------

Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 04:22:41 -07:00
Peter Steinberger 82231b425b fix(qa-channel): isolate account evidence and exclude deleted messages (#116744)
* fix(qa): scope transport verdicts to visible account replies

* refactor(qa): remove obsolete outbound wait aliases

---------

Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 04:19:41 -07:00
Vincent Koc 775b958716 Merge pull request #87273 from BSG2000/fix/talk-openai-realtime-auth-diagnostic-pr
* commit '80a12e30c1e40cb4a49698cb9b556d74fb055174':
  fix(openai): bound realtime websocket auth errors
2026-07-31 19:16:38 +08:00
Peter Steinberger 4e4f76f151 fix(cli): make status and provider diagnostics complete (#116776)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 04:10:36 -07:00
Vincent Koc b218adb7a7 chore(openai): merge current main into lifecycle fix
* origin/main: (23 commits)
  fix(agents): preserve resumed turns after stale terminal events (#116777)
  fix(browser): preserve tab-bound browser authorization (#116778)
  fix(doctor): correct SQLite-backed automation warnings (#116769)
  fix(release): skip unavailable Buzz QA runner (#116753)
  feat(plugins): externalize DuckDuckGo search (#116740)
  refactor(reply): simplify task-owned typing refresh (#116770)
  fix(chat): explain chat-only model limits
  feat(models): expose tool support to clients
  docs(skill): require independent proof before issue closure
  fix(skills): allow autonomous sweep sync (#116755)
  fix(irc): recognize punctuation in nickname mentions (#116758)
  fix(plugins): require explicit source external startup (#116759)
  fix(whatsapp): keep sends running when typing presence fails (#116739)
  fix(cli): reject dangling config path escapes (#116738)
  fix(qa): authenticate summaries and bound native scenario commands (#116748)
  fix(bedrock): reject truncated streams and preserve audio results (#116743)
  docs(skill): isolate autonomous issue sweep worktrees
  fix(ci): retire Kova runtime deps coverage (#116760)
  chore(i18n): refresh native locales (#116640)
  fix(ollama): resolve web search secret refs (#104829)
  ...
2026-07-31 18:58:31 +08:00
Peter Steinberger 66d5410171 fix(browser): preserve tab-bound browser authorization (#116778)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 03:57:04 -07:00
Vincent Koc 6830820755 feat(plugins): externalize DuckDuckGo search (#116740) 2026-07-31 18:49:07 +08:00
BSG2000 80a12e30c1 fix(openai): bound realtime websocket auth errors 2026-07-31 18:45:12 +08:00
Peter Steinberger 873bcc2985 fix(irc): recognize punctuation in nickname mentions (#116758)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 03:21:31 -07:00
Peter Steinberger 402bd4af01 fix(whatsapp): keep sends running when typing presence fails (#116739)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 03:17:24 -07:00
Peter Steinberger 7ea4129227 fix(qa): authenticate summaries and bound native scenario commands (#116748)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 03:12:48 -07:00
Peter Steinberger f9207db3ca fix(bedrock): reject truncated streams and preserve audio results (#116743)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 03:10:54 -07:00
Leon-SK668 86b1e26993 fix(ollama): resolve web search secret refs (#104829)
* fix(ollama): resolve web search secret refs

* fix(ollama): preserve blocked search secret refs

* fix(ollama): share web search credential policy

* fix(ollama): resolve web search secret refs via shared resolver

Route configured models.providers.ollama.apiKey resolution through the
existing shared resolveWebSearchProviderCredential helper so env-backed
SecretRefs resolve for web search, and resolve the ambient OLLAMA_API_KEY
independently of the configured selected-host key so mixed setups still
reach the Ollama Cloud fallback after both selected-host attempts fail
(regression fixed at web-search-provider.ts:195).

Drop the two optional plugin-SDK resolver hooks (provider normalization
and unavailable-configured-ref callback) added earlier: the fix does not
depend on them, so the shared resolver and its generated plugin-SDK
baseline stay identical to main and no new plugin-SDK contract surface is
introduced. Ollama applies its own non-secret-marker filter locally on
the resolver output instead.

Add a mixed-credential regression test (configured host key plus a
distinct ambient OLLAMA_API_KEY reaching the cloud fallback) and drop the
tests for the removed fail-closed-throw behavior.

* fix(ollama): fail closed on unavailable web search refs

* fix(web-search): resolve env shorthand secret refs

* docs(changelog): note Ollama web-search SecretRef fix

* chore(changelog): remove release-owned entry

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-31 17:57:47 +08:00
Peter Steinberger 3d0f02c223 fix(ollama): honor stop sequences and async payload hooks (#116737)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 02:57:31 -07:00
wahaha1223 a28219bcee fix(ollama): stop oversized stream records from growing memory (#107473)
* fix(ollama): bound pending NDJSON stream records

* chore(changelog): remove release-owned entry

---------

Co-authored-by: wangmiao0668000666 <wang.miao86@xydigit.com>
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-31 17:57:01 +08:00
Vincent Koc bfbba677e4 chore(openai): merge current main into lifecycle fix
* origin/main: (38 commits)
  fix(agents): compact session status change text (#116742)
  fix(llama-cpp): recover plaintext tool calls (#116736)
  fix(telegram): validate native queue arguments before fallback (#116726)
  chore(skills): add autonomous issue sweep workflow
  docs(auto-qa): require clean root-cause refactors
  fix(ollama): models advertise tools when /api/show fails (#109971)
  fix(ollama): use CJK-aware char estimate for usage fallback (#110073)
  fix(ollama): release failed setup response bodies before returning (#111802)
  feat(plugins): externalize Synthetic provider (#116720)
  fix(agents): unblock channel turns after restart recovery (#116728)
  fix(telegram): keep typing alive during active steered tasks (#116721)
  fix(gateway): admit standalone MCP app work (#116727)
  fix(googlechat): record canonical receipt thread (#116717)
  test(ui): cover the Talk relay start-stop race
  fix(ui): close superseded Talk allocations
  fix(agents): resume interrupted turns past progress commentary (#116725)
  fix(gateway): sign device proofs with challenge time (#116679)
  test(google): cover expired CLI OAuth compatibility
  fix(testing): load relay smoke through UI Vite config
  test(testing): guard realtime relay smoke module path
  ...
2026-07-31 17:50:34 +08:00
Vincent Koc 94c0f33f1f Merge pull request #116611 from openclaw/experiment/google-cli-supported-paths
fix(google): stop offering unsupported CLI setup
2026-07-31 17:48:18 +08:00
Peter Steinberger 0e1304d0de fix(llama-cpp): recover plaintext tool calls (#116736)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 02:45:32 -07:00
Peter Steinberger 1f578f0e65 fix(telegram): validate native queue arguments before fallback (#116726)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 02:45:15 -07:00
zw-xysk d2b869eda7 fix(ollama): models advertise tools when /api/show fails (#109971)
* fix(ollama): do not advertise tools when /api/show fails

Failed show responses left capabilities undefined, which
buildOllamaModelDefinition treats as optimistic supportsTools.
Match setup inspect: return empty capabilities instead.

* test(ollama): cover show-fail tools gate including L3 live HTTP

Unit paths for HTTP error/throw plus real 127.0.0.1 server proving
buildOllamaProvider keeps supportsTools false when /api/show 500s.

* fix(ollama): keep reasoning heuristics when /api/show fails

Distinguish failed inspection from authoritative empty capabilities
so tools stay conservative without suppressing model-name reasoning.

* test(ollama): cover three capability states for tools and reasoning

Failed show keeps reasoning heuristics; authoritative [] disables both.

* fix(ollama): propagate showInspectionFailed through setup configs

Setup inspection failures now use the three-state marker instead of
authoritative empty capabilities, keeping tools off and reasoning heuristics.

* test(ollama): setup show-fail keeps tools off and reasoning heuristics

Cover interactive setup when /api/show returns 500 for deepseek-r1.

* fix(ollama): propagate showInspectionFailed through dynamic model resolve

/models add dynamic path now builds failed-show definitions with tools
off while preserving reasoning name heuristics.

* test(ollama): dynamic resolve covers failed /api/show three-state behavior

Mock builder matches production tools/reasoning contract for inspection failure.

* fix(ollama): keep catalog-missing dynamic resolve fail-closed on show failure

Failed /api/show is an existence probe for unresolved models; return undefined so typos/404s stay rejected. Tag-discovered and setup paths keep showInspectionFailed tools-off behavior.

* chore(changelog): remove release-owned entry

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-31 17:37:48 +08:00
NIO 89bfd2150c fix(ollama): use CJK-aware char estimate for usage fallback (#110073)
* fix(ollama): use CJK-aware char estimate for usage fallback

* fix(ollama): keep CJK estimator plugin-private

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-31 17:37:13 +08:00
dwc1997 2c4886ec40 fix(ollama): release failed setup response bodies before returning (#111802)
* fix(ollama): release failed setup response bodies before returning

* chore(changelog): remove release-owned entry

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-31 17:32:36 +08:00
Vincent Koc a550827dad feat(plugins): externalize Synthetic provider (#116720) 2026-07-31 17:19:43 +08:00
Peter Steinberger f03dc9785e fix(telegram): keep typing alive during active steered tasks (#116721) 2026-07-31 02:14:19 -07:00
Vincent Koc 07a352ac95 fix(openai): narrow idle lifecycle cancellation 2026-07-31 17:10:40 +08:00
Peter Steinberger a5c8c5b3ec fix(googlechat): record canonical receipt thread (#116717)
* fix(googlechat): preserve receipt thread identity

* test(googlechat): prove receipt thread mirroring
2026-07-31 02:07:34 -07:00
Vincent Koc c5e9635b63 Merge pull request #116701 from openclaw/fix/voice-forced-consult-teardown
fix(voice-call): prevent late forced consults after teardown

* refs/remotes/origin/pr/116701:
  fix(voice-call): cancel consults on bridge replacement
  fix(voice-call): recheck consult owner after await
  fix(voice-call): cancel pending replacement consults
  fix(voice-call): isolate replacement consult handoff
  test(voice-call): cover late forced consult teardown
  fix(voice-call): cancel forced consults on teardown
2026-07-31 17:00:11 +08:00
Vincent Koc 255bb69a0e Merge pull request #116603 from synthalorian/fix/issue-116525
fix(openai): restrict GPT-Live broker cleanup to plugin disable only

* refs/remotes/origin/pr/116603:
  fix(edit): restore UTF-16 difference offsets
  fix(openai): share GPT-Live browser broker ownership
  fix(edit): prefer-for-of loop in firstDifferenceIndex
  fix(openai): return undefined from cleanup on non-disable reasons
  fix(openai): restrict GPT-Live broker cleanup to plugin disable only
2026-07-31 16:55:13 +08:00
Vincent Koc 20e68e01df fix(gateway): sign device proofs with challenge time (#116679) 2026-07-31 16:45:53 +08:00
Vincent Koc 337a2b3fc7 fix(openai): discard preconnect audio on close 2026-07-31 16:42:54 +08:00
Vincent Koc 42f1e8dd41 fix(openai): terminalize preconnect lifecycle 2026-07-31 16:42:25 +08:00
Vincent Koc 0ce230c861 test(google): cover expired CLI OAuth compatibility 2026-07-31 16:40:38 +08:00
Vincent Koc 091bc7f9ed Merge remote-tracking branch 'origin/main' into experiment/google-cli-supported-paths
* origin/main: (115 commits)
  test: type session request parameters (#116713)
  fix: retain event invalidation for pagination
  docs: note queued session refresh fix
  fix: preserve queued session refresh options
  fix(exec): require approval for abbreviated inline eval flags [AI] (#116529)
  fix: keep owner-only tools out of non-owner skill commands [AI] (#116532)
  fix(tui): require a fresh agent roster (#116715)
  fix(memory-wiki): preserve user edits when rolling back ChatGPT imports (#116517)
  fix(agents): cron failures preserve timeout and cancellation reasons (#116566)
  fix(release): unblock beta validation workflows (#116708)
  fix(ci): discover frozen target startup benchmark cases (#116711)
  fix(session): preserve reset message payloads (#116195)
  fix(qa): tolerate loaded-runner bus delivery stalls (#116448)
  improve(ci): rebalance embedded agent test configs (#116436)
  fix(browser): return committed trace path (#116702)
  fix(qa): exceed Slack table aggregate limit in fallback probe (#116447)
  fix(qa): use built plugin tools server (#116442)
  fix(test): keep memory FD repro config valid (#116698)
  fix(telegram): keep queued tool progress in one message (#116685)
  fix(qa): stop waiting on yielded fanout runs (#116440)
  ...

# Conflicts:
#	src/system-agent/setup-inference-detect.ts
#	ui/src/e2e/model-setup.e2e.test.ts
2026-07-31 16:40:33 +08:00
Yuval Dinodia 623a015928 fix(memory-wiki): preserve user edits when rolling back ChatGPT imports (#116517)
* fix(memory-wiki): preserve user edits when rolling back ChatGPT imports

Rollback deleted created pages and overwrote updated pages unconditionally,
destroying content the user added after the import with no recovery copy.
Import runs now record a content hash of each written page after vault
compile, and rollback preserves any page whose current content no longer
matches into the run's recovered directory before deleting or restoring.
Legacy run records without hashes preserve unconditionally.

Fixes #116457

* fix(memory-wiki): move pages aside atomically during rollback

Rollback now renames the live page into the recovery location before
inspecting it, so a concurrent external save cannot land between the
content read and the delete or snapshot restore. Matching pages drop
the moved copy; mismatching pages keep it as the recovery file.

* fix(memory-wiki): make rollback snapshot restore collision-safe

The snapshot restore wrote directly to the page path after the
move-aside, so a page recreated by an editor in that window was
overwritten with no recovery copy. Restore now creates the snapshot
exclusively and on collision moves the recreated page aside and
retries; recovery filenames are uniqued so a second move-aside cannot
clobber an earlier preserved copy.

* fix(memory-wiki): record rollback hashes at write time

* fix(memory-wiki): make ChatGPT rollback retry-safe

* fix(memory-wiki): fence ChatGPT rollback phases

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-31 08:01:52 +00:00
Vincent Koc c30322418e fix(openai): share GPT-Live browser broker ownership 2026-07-31 16:00:31 +08:00