Commit Graph

20930 Commits

Author SHA1 Message Date
Peter Steinberger d1b080eac5
perf: route more vitest files to threads 2026-03-22 08:40:27 -07:00
Peter Steinberger 49091ebcbd
chore: update dependencies except carbon 2026-03-22 08:37:03 -07:00
Vincent Koc 4685fc7e77
fix(doctor): align matrix and zalouser allowlist semantics (#52096)
* fix(doctor): align extension allowlist semantics

* fix(doctor): skip generic zalouser group warning
2026-03-22 08:19:24 -07:00
Tak Hoffman 52a0aa0672
ci: build dist before macos tests (#52279)
* ci: hydrate dist before plugin-sdk test lanes

* ci: skip bun-only dist build on PRs

* ci: build dist before macos tests
2026-03-22 09:10:08 -05:00
CharZhou a07dcfde84
fix: pass clientTools to runEmbeddedAttempt in /v1/responses agent path (#52171)
Merged via squash.

Prepared head SHA: 74519e7da6
Co-authored-by: CharZhou <17255546+CharZhou@users.noreply.github.com>
Co-authored-by: frankekn <4488090+frankekn@users.noreply.github.com>
Reviewed-by: @frankekn
2026-03-22 22:05:00 +08:00
Tak Hoffman 7066316db8
ci: hydrate dist before plugin-sdk test lanes (#52267)
* ci: hydrate dist before plugin-sdk test lanes

* ci: skip bun-only dist build on PRs
2026-03-22 08:59:13 -05:00
Luke ad24fccff5
test(gateway): stabilize suite session-store config (#52193)
* test(gateway): stabilize suite session-store config

* test(gateway): preserve seeded config semantics

* test(gateway): update seeded session store overrides
2026-03-22 19:18:44 +08:00
Bartok9 c70ae1c96e
fix(poll-params): treat zero-valued numeric poll params as unset (#52150)
Merged via squash.

Prepared head SHA: 189e695b7c
Co-authored-by: Bartok9 <259807879+Bartok9@users.noreply.github.com>
Co-authored-by: frankekn <4488090+frankekn@users.noreply.github.com>
Reviewed-by: @frankekn
2026-03-22 18:39:31 +08:00
Peter Steinberger 67e61acac7 test: refresh unit timing snapshot 2026-03-22 09:35:36 +00:00
Peter Steinberger b70b7b0d94 test: trim more local test startup overhead 2026-03-22 09:35:36 +00:00
Peter Steinberger 3382ef2724 perf: reduce plugin runtime startup overhead 2026-03-22 09:35:36 +00:00
Bob aa6b962a3a
Discord/ACP: forward abort signals into ACP turns (#52148)
* Discord/ACP: forward abort signals into ACP turns

* ACP: abort queued turns before actor start
2026-03-22 10:04:32 +01:00
Peter Steinberger 8ac3e41cdf test: refresh unit timing snapshot 2026-03-22 07:52:58 +00:00
Peter Steinberger 574cc9de64 test: trim more unit test startup overhead 2026-03-22 07:52:58 +00:00
Peter Steinberger 3cd4978fc2
refactor(agents): unify tool media reply delivery 2026-03-22 00:49:56 -07:00
Peter Steinberger 2d492ab534 test: tighten regression assertions across extension tests 2026-03-22 07:46:07 +00:00
Peter Steinberger 4becbc8b25 test: remove duplicate outbound plugin tests 2026-03-22 07:38:01 +00:00
Peter Steinberger b4656f193a test: strengthen regression coverage and trim low-value checks 2026-03-22 07:38:01 +00:00
Peter Steinberger f537ea90ed
perf: route hot vitest files to threads 2026-03-22 00:31:17 -07:00
Peter Steinberger 037fa2f8fb test: refresh unit timing snapshot 2026-03-22 07:22:42 +00:00
Peter Steinberger 94ec0d6aeb test: trim plugin-sdk import-heavy startup 2026-03-22 07:22:42 +00:00
Ayaan Zaidi 537115bbdc
test: fix channel interaction/media regressions 2026-03-22 11:56:19 +05:30
Peter Steinberger ec0e4ff218 test: refresh unit timing snapshot 2026-03-22 05:59:46 +00:00
Peter Steinberger b2f9ab9a1f test: trim import-heavy startup paths 2026-03-22 05:59:46 +00:00
Vincent Koc 041f0b87ec
perf(inbound): trim cold startup import graph (#52082)
* perf(inbound): trim cold startup import graph

* chore(reply): drop redundant inline action type import

* fix(inbound): restore warning and maintenance seams

* fix(reply): restore type seam and secure forked transcripts
2026-03-21 22:32:21 -07:00
Vincent Koc c96a12aeb9
Agents: add per-agent defaults and safe model fallback (#51974)
* Agents: add per-agent defaults and safe model fallback

* Docs: add per-agent thinking/reasoning/fast defaults to config reference and thinking docs

* Format get-reply directives

* Auto-reply: guard agent reasoning defaults

* Docs: update config baseline
2026-03-21 22:27:24 -07:00
Bryan Tegomoh, MD, MPH f783101735
fix: accept session_status sessionKey=current alias (#39574)
* fix: normalize sessionKey=current in shared session resolution

Move the "current" alias handling from a narrow session_status-only
mapping into the shared session resolution layer so every session tool
(session_status, sessions_history, sessions_send) resolves it
consistently.

Changes:
- Register "current" as a canonical session key in looksLikeSessionKey
  so it is never misclassified as a sessionId
- Normalize "current" to the requester's own session key inside
  resolveSessionReference and resolveInternalSessionKey
- Add "current" normalization in session_status before local store
  lookup via the existing "main" alias scoping
- Add regression tests covering both main-session and cross-agent
  resolution paths

Fixes #39570

* fix: keep session_status current bound to requester

* fix: preserve literal current session targets

* fix: preserve literal current in session_status

* fix: defer current alias in session_status

* fix: scope session_status current to active store (#39574) (thanks @BryanTegomoh)

* fix: preserve literal current session previews (#39574) (thanks @BryanTegomoh)

---------

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-03-22 10:55:05 +05:30
Peter Steinberger 707eb8e1b3 test: refresh unit timing snapshot 2026-03-22 05:03:10 +00:00
Peter Steinberger e1854dfbf6 test: trim import-heavy startup paths 2026-03-22 05:03:10 +00:00
Peter Steinberger 8727338372 perf: extract lightweight runtime seams 2026-03-22 05:03:10 +00:00
Vincent Koc 2b210703a3
fix(models): cache models.json readiness for embedded runs (#52077)
* fix(models): cache models.json readiness for embedded runs

* fix(models): harden readiness cache inputs
2026-03-21 21:58:10 -07:00
Tak Hoffman 432e8943ad
fix(discord): dedupe inbound message deliveries (#51950)
* fix(discord): dedupe inbound message deliveries

* test(discord): disable debounce in tool-result dispatch spec
2026-03-21 23:55:52 -05:00
Vincent Koc 7a0dacbfba
refactor(doctor): extract note emission (#52076)
* refactor(doctor): extract note emission

* test(doctor): cover optional note emission paths
2026-03-21 21:52:14 -07:00
Felippe Mercurio 8790c54635
fix(android): use scheme default port for gateway setup URLs (#43540)
* fix(android): use scheme default port for gateway setup URLs

* test(android): cover gateway endpoint default ports

* fix(android): preserve direct gateway default port

* fix(android): preserve explicit cleartext port display

* fix: preserve Android gateway setup URL ports (#43540) (thanks @fmercurio)

---------

Co-authored-by: clawdia <clawdia@fmercurio.tech>
Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-03-22 10:21:38 +05:30
Tak Hoffman 0f6dbb4390
Fix configure cache ownership for plugin resolvers (#52018)
* fix configure cache ownership

* address web-search cache review

* rekey provider wizard cache

* honor plugin cache opt-outs

* fix cache invalidation gaps

* align plugin snapshot ttl

* refresh snapshot cache keys
2026-03-21 23:41:45 -05:00
Vincent Koc ec59974a46
refactor(doctor): extract flow finalization (#52067)
* refactor(doctor): extract flow finalization

* test(doctor): pin repair finalization to cfg
2026-03-21 21:27:51 -07:00
Vincent Koc 60f559e217
refactor(doctor): extract matrix sequencing (#52056) 2026-03-21 21:10:48 -07:00
Peter Steinberger 4c9f411f6d test(discord): stabilize tool-result reply tests 2026-03-22 04:07:38 +00:00
Peter Steinberger 7ac312b8fe
fix(agents): migrate remaining media artifacts 2026-03-21 21:05:33 -07:00
Goweii e7e4c68caf
Android: update status bar appearance in OpenClawTheme (#51098)
* Android: update status bar appearance in OpenClawTheme

* fix: update Android status bar appearance (#51098) (thanks @goweii)

---------

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-03-22 09:33:24 +05:30
Peter Steinberger a2472dc31b refactor(test): dedupe channel startup test setup 2026-03-22 03:50:41 +00:00
Vincent Koc 177136c964
perf(inbound): trim reply startup imports (#51988)
* perf(inbound): narrow reply startup imports

* perf(inbound): trim reply startup imports

* fix(perf): dedupe archive helpers
2026-03-21 20:49:41 -07:00
Vincent Koc b2380b3ab1
refactor(doctor): extract repair sequencing (#51980)
* refactor(doctor): extract repair sequencing

* fix(doctor): sanitize repair runner notes
2026-03-21 20:43:16 -07:00
Peter Steinberger 89bc66feef refactor(test): dedupe startup channel test helpers 2026-03-22 03:41:25 +00:00
Peter Steinberger 36feecf018 refactor(test): dedupe bluebubbles webhook auth helpers 2026-03-22 03:24:22 +00:00
Kaneki 1e98dbcad3
Android: fix Bitmap memory leaks in PhotosHandler (#41888)
* Android: fix Bitmap memory leaks in PhotosHandler

Bitmaps created by decodeScaledBitmap and intermediate scaled copies
inside encodeJpegUnderBudget were never recycled, leaking native memory
on every photos.latest invocation (up to 20 bitmaps per call).

- latest(): wrap bitmap usage in try/finally to guarantee recycle
- decodeScaledBitmap(): recycle the decoded bitmap after scaling
- encodeJpegUnderBudget(): use try/finally to recycle intermediate
  scaled bitmaps on all exit paths (success, compress failure, and
  cannot-shrink-further early returns)

Made-with: Cursor

* Android: guard decodeScaledBitmap against scale() exceptions

* fix: note Android photos bitmap cleanup (#41888) (thanks @Kaneki-x)

---------

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-03-22 08:53:26 +05:30
Kaneki 2909d8cd12
Android: fix Bitmap memory leaks in CanvasController snapshots (#41889)
* Android: fix Bitmap memory leaks in CanvasController snapshots

snapshotPngBase64() and snapshotBase64() create bitmaps via
captureBitmap() and scaleForMaxWidth() but never recycle them,
leaking native memory on every canvas snapshot invocation.

Wrap both methods in nested try/finally blocks:
- outer: always recycles the captured bitmap
- inner: recycles the scaled bitmap only when it differs from the
  captured one (scaleForMaxWidth returns `this` when no scaling needed)

Made-with: Cursor

* fix: note Android canvas snapshot bitmap leak in changelog (#41889) (thanks @Kaneki-x)

---------

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-03-22 08:50:42 +05:30
Kaneki 88da51d91b
Android: fix temp file leak in CameraHandler.handleClip (#41890)
* Android: fix temp file leak in CameraHandler.handleClip

When readBytes() throws (IOException, OOM, etc.), the recorded clip
file was never deleted because delete() only ran on the success path.

Move file.delete() into a finally block so the temp file is cleaned up
regardless of whether readBytes() succeeds or fails.

Made-with: Cursor

* fix: Android camera clip cleanup (#41890) (thanks @Kaneki-x)

---------

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-03-22 08:49:50 +05:30
Ayaan Zaidi 506861efd0 fix: Android contacts search wildcard escaping (#41891) (thanks @Kaneki-x) 2026-03-22 08:48:29 +05:30
kaneki f7866c1c15 Android: escape SQL LIKE wildcards in contacts search query
The contacts search passed user input directly into a LIKE pattern
without escaping % and _ characters, causing them to act as SQL
wildcards and return incorrect results.

Add an escapeLikePattern() helper that escapes \, %, and _ with a
backslash, and add ESCAPE '\' to the selection clause so SQLite
treats them as literal characters.

Made-with: Cursor
2026-03-22 08:48:29 +05:30