Commit Graph

66965 Commits

Author SHA1 Message Date
Vincent Koc
2af4871f63 fix(ci): refresh plugin SDK declaration budget 2026-07-12 16:22:29 +08:00
zw-xysk
1cbb67668f fix(slack): log typing reaction errors instead of silently swallowing them (#103303)
* fix(slack): log typing reaction errors instead of silently swallowing them

The typing reaction (emoji) add and remove calls both use empty catch
handlers, silently discarding all errors. If the bot token lacks
reactions:write scope, the operator has no way to diagnose why the
configured typing reaction never appears.

Replace the empty catch with logVerbose calls that record the Slack
error, matching the existing logging pattern in the same file.

* test(slack): cover typing reaction failures

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-12 09:20:56 +01:00
Peter Steinberger
218dcd815a feat(tooling): enforce noUncheckedIndexedAccess in the extensions lane (NUIA phase 4) (#105132)
* fix(extensions): make indexed access explicit across channel plugins

Transport-payload-safe burn-down: malformed Telegram/Discord/QQ/LINE
and sibling channel input keeps existing skip paths; no synthesized
fields, no new throws in delivery loops. Zalo escape sentinels preserve
literal matches instead of undefined replacements.

* fix(extensions): make indexed access explicit across provider and memory plugins

Stream and model iteration, tool-block guards, capture guards, and
sparse accumulators; singleton model reads carry named invariants.

* fix(extensions): make indexed access explicit across tooling plugins, flip the extensions lane

Remaining plugins (oc-path, qa-lab, browser, logbook, and siblings) plus
the tsconfig.extensions.json flag flip. Cleanup: logbook sampleFrames
NaN index at max=1, QA retry clamp at non-positive attempts, dead Canvas
probe and OpenShell no-op slice removed, twitch test setup leak excluded
from the prod lane.

* refactor(plugin-sdk): expose expectDefined via a focused SDK subpath

Extensions imported @openclaw/normalization-core directly, crossing the
external-plugin packaging boundary (it only worked because the runtime
builder bundles undeclared workspace helpers). expect-runtime joins the
canonical entrypoints JSON, generated exports, API baseline, docs, and
subpath contract test; all 78 extension imports now use the SDK seam.
Two scanner-shaped locals renamed for review-bundle hygiene.

* chore(plugin-sdk): raise surface budgets for the expect-runtime subpath

One new entrypoint with one callable export, added intentionally as the
packaging-honest seam for extension invariant helpers.
2026-07-12 09:17:31 +01:00
Shubhankar Tripathy
43e138cc66 feat(google-meet): retain the full caption transcript per session (#103387) (#103811)
* feat(google-meet): retain bounded transcripts

Co-authored-by: lonexreb <reach2shubhankar@gmail.com>

* chore: leave changelog to release tooling

* fix(google-meet): satisfy transcript CI checks

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-12 09:16:46 +01:00
Vincent Koc
648d742ee7 fix(ci): validate sqlite Codex transcripts 2026-07-12 16:15:44 +08:00
Vincent Koc
a381b50643 test(agents): skip region-blocked xAI models 2026-07-12 16:15:44 +08:00
Peter Steinberger
6fc564278d feat(agents): sessions_search full-text recall over past session transcripts (#105057)
Adds a core sessions_search agent tool backed by a SQLite FTS5 index that
lives next to the transcript rows in the per-agent database. Indexing is
transactional: user/assistant text is indexed inside the same write
transaction that persists the event, deletes drop index rows in the same
transaction, and branch rewinds mark the session dirty so the next search
rebuilds it from the same visible-path resolution sessions_history uses
(which also lazily backfills doctor-migrated databases). Search executes
gateway-side behind an additive sessions.search method with a bounded
session-key allowlist; visibility, sandbox restrictions, and snippet
redaction mirror sessions_history.

Closes #100978
2026-07-12 09:15:41 +01:00
Vincent Koc
2f7aa65167 fix(qa): avoid login shell in cron watcher (#105118) 2026-07-12 16:15:26 +08:00
Vincent Koc
97c874d563 test(i18n): cover retry validation feedback 2026-07-12 16:15:23 +08:00
Vincent Koc
f67e50cd1a fix(i18n): feed validation failures into retries 2026-07-12 16:15:23 +08:00
llagy007
7ed7840c94 fix(google-meet): validate calendar Meet URLs (#104863)
* fix(google-meet): validate calendar meet urls

* fix(google-meet): share meet url normalization

* fix(google-meet): normalize Calendar Meet URLs

* fix(google-meet): keep calendar text fallback stable

* fix(google-meet): validate calendar text candidates

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
Co-authored-by: Peter Steinberger <peter@steipete.me>
2026-07-12 09:12:40 +01:00
Vincent Koc
86af5f08b3 fix(release): support explicit provenance overrides 2026-07-12 16:12:23 +08:00
Peter Steinberger
91ca35ba58 ci: make locale parity advisory before release (#105140) 2026-07-12 09:11:57 +01:00
Peter Steinberger
c0496ea96d fix(android): bound structured chat image decoding (#105065)
* fix(android): bound structured chat images

* chore(android): sync native i18n inventory
2026-07-12 09:11:21 +01:00
Peter Steinberger
9cda1af020 fix(ui): open the start screen from the sidebar brand (#105046)
* fix(ui): restore sidebar start-screen navigation

* test(ui): align sidebar proof with automations
2026-07-12 09:09:27 +01:00
Vincent Koc
d6d7c19c9d fix(tasks): fail closed when task-flow state cannot restore (#105088)
* fix(tasks): fail closed on task-flow restore errors

* fix(tasks): keep maintenance checks behind owner seam

* fix(tasks): gate runtime startup on flow restore

* test(tasks): prove runtime restore gate failures

* fix(tasks): gate cancellation on flow readiness
2026-07-12 16:08:29 +08:00
Vincent Koc
c293fef3a8 refactor(sessions): remove obsolete file projection path (#105136) 2026-07-12 16:08:04 +08:00
Peter Steinberger
10371ff475 fix(gateway): suspension waits for accepted node work (#105134)
* fix(gateway): retain node event work during suspension

* chore: leave gateway release note to release closeout
2026-07-12 09:07:23 +01:00
Peter Steinberger
6038480915 feat(ui): browse Gateway and node folders from one root (#105114)
* feat(ui): browse Gateway and node folders

* chore: keep changelog release-owned

* chore: refresh native i18n inventory

* refactor(macos): isolate node filesystem commands
2026-07-12 09:07:07 +01:00
Peter Steinberger
448b90a594 feat(android): adopt per-device app sessions (#105115)
* feat(android): adopt per-device app sessions

Co-authored-by: snowzlmbot <293528334+snowzlmbot@users.noreply.github.com>

* test(android): assert latest session adoption wins

---------

Co-authored-by: snowzlmbot <293528334+snowzlmbot@users.noreply.github.com>
2026-07-12 09:06:45 +01:00
Vincent Koc
4da606ccf1 refactor(line): remove unused rich-menu user helpers (#105107) 2026-07-12 16:05:07 +08:00
Peter Steinberger
1a946dba78 test(qa): cover repeated live restart recovery (#105126) 2026-07-12 09:03:54 +01:00
Peter Steinberger
1c9a2f6a9d perf(gateway): skip completed startup migrations (#105099) 2026-07-12 09:03:45 +01:00
Vincent Koc
ac69e5008c fix(ci): avoid stale workflow rate limits (#105117)
* fix(ci): throttle stale issue locking

* fix(ci): throttle stale issue locking
2026-07-12 16:03:24 +08:00
Peter Steinberger
d325b6c76b fix: preserve parent abort reasons through timeouts (#105071) 2026-07-12 09:02:12 +01:00
Peter Steinberger
b6c171901e fix(secrets): harden exec provider diagnostics (#105082) 2026-07-12 09:01:33 +01:00
Peter Steinberger
be74297a14 fix(docs): preserve Render product name 2026-07-12 03:59:01 -04:00
Peter Steinberger
da4a480089 chore(apps): remove more dead code 2026-07-12 00:58:32 -07:00
Vincent Koc
55679d88c6 test(agents): budget Grok reasoning live probes 2026-07-12 15:55:29 +08:00
Peter Steinberger
89f740651d fix(browser): normalize geolocation permission origins (#105092)
Co-authored-by: llagy007 <0668001470@xydigit.com>
2026-07-12 08:54:04 +01:00
Vincent Koc
68f2874126 chore(ui): refresh locales and repair cron lifecycle fixtures (#105100)
* chore(ui): refresh control ui locales

* test(cron): keep lifecycle fixtures in memory

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-12 15:53:06 +08:00
Vincent Koc
8f3fe36e28 test(gateway): match current-bound cron probes 2026-07-12 15:52:21 +08:00
Vincent Koc
8ac8754679 fix(ci): read Codex live sessions from sqlite 2026-07-12 15:50:47 +08:00
Peter Steinberger
e77cf7d44e fix(audit): correlate prefixed outbound conversations (#104816)
* fix(audit): normalize outbound conversation refs

* chore(audit): leave release notes to release tooling
2026-07-12 08:46:52 +01:00
Vincent Koc
cf33f5aa02 fix(qa): force Codex runtime for Slack approvals 2026-07-12 15:43:58 +08:00
Peter Steinberger
952733d6fa test(macos): isolate gateway device stores (#105048) 2026-07-12 08:42:20 +01:00
Vincent Koc
b0455c9323 test(gateway): assert sqlite trajectory capture 2026-07-12 15:41:35 +08:00
zw-xysk
0b30a3292f docs(slack): fix channel config examples — use 'enabled' instead of 'allow' to match strict schema (#103491)
* docs(slack): fix channel config examples — use 'enabled' instead of 'allow' to match strict schema

* docs(slack): align config reference channel toggle

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-12 08:38:03 +01:00
Peter Steinberger
e4d8a2a55b fix(android): preserve TLS hostname context (#105072)
* fix(android): preserve TLS hostname context

Co-authored-by: whisky0809 <32197959+whisky0809@users.noreply.github.com>

* style(android): order TLS test imports

* style(android): group TLS test imports

---------

Co-authored-by: whisky0809 <32197959+whisky0809@users.noreply.github.com>
2026-07-12 08:32:03 +01:00
Kushida
9b057036e3 fix(gateway): keep channels stopped during shutdown and reload (#104811)
* fix(gateway): stop retired health monitor restarts

* style(gateway): format health monitor regression

* fix(gateway): stop retired monitor account scans

* refactor(gateway): coordinate health monitor handoff

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-12 08:27:45 +01:00
Peter Steinberger
401ae11b71 fix(codex): preserve native subagent results after parent cleanup (#102060)
Codex native subagent results now survive parent cleanup, app-server persistence races, resumptions, and transient delivery failures. The monitor treats app-server thread/read and thread/turns/list history as canonical recovery state (works on non-stdio transports), retains the shared physical client only while detached children need monitoring, fences stale reads across lifecycle changes, keeps interrupted children resumable, preserves multi-agent V2 subAgentActivity lineage, and bounds terminal delivery retries with a durable failed state. Removes rollout-file discovery, transcript parsing, periodic whole-client rescans, and the deferred one-shot cleanup path.

Adds an opt-in live E2E lane (OPENCLAW_LIVE_CODEX_NATIVE_SUBAGENT=1) proving detached delivery and history-only recovery against a real app-server with an OpenAI key, restores the registered-child user-spoof regression test, and registers both codex opt-in live files in the release shard optional-env map.

Closes #97593
Related: #93313
2026-07-12 08:27:40 +01:00
llagy007
f5a50db569 fix(microsoft-foundry): reject malformed endpoints (#104796) 2026-07-12 08:23:44 +01:00
Vincent Koc
efdce6754d fix(ci): align scheduled e2e checks with sqlite sessions 2026-07-12 15:22:37 +08:00
Peter Steinberger
ba9a04580b fix(macos): unblock node transport reconnects (#105091)
* fix(macos): unblock node transport reconnects

* chore(macos): leave release notes to release flow
2026-07-12 08:17:59 +01:00
Vincent Koc
5839c2e04b fix(plugins): avoid native ESM fallback races 2026-07-12 15:16:07 +08:00
Vincent Koc
82b07423a0 test(ui): isolate chat settings persistence 2026-07-12 15:11:04 +08:00
Vincent Koc
4d15c47e9f fix(qa): keep runtime parity lanes reproducible 2026-07-12 15:10:38 +08:00
Vincent Koc
d36d543ed4 fix(qa): recognize typed Slack approval actions 2026-07-12 15:10:38 +08:00
Vincent Koc
b66929152c fix(ci): retry locale placeholder mismatches 2026-07-12 15:09:23 +08:00
Vincent Koc
87c8bdfc81 test(ui): isolate locale-sensitive custom elements 2026-07-12 15:00:53 +08:00