699 Commits

Author SHA1 Message Date
Patrick Erichsen
5107384e67 fix: stabilize Matrix tool progress QA (#78179)
* fix: stabilize matrix tool progress QA

* fix: handle backtick matrix progress previews

* fix: reuse observed matrix approvals

* fix: retry matrix generated image QA

* fix: wait for matrix sas trust propagation

* fix: resolve matrix target both approvals by reaction

* fix: avoid matrix target both approval echo wait

* fix: reuse observed matrix target both dm approval

* fix: retry matrix approval delivery

* fix: accept active matrix approval dm

* test: align matrix approval retry receipt

* test: include matrix approval view in retry fixture
2026-05-05 23:20:08 -07:00
Peter Steinberger
b85b1c68d1 Refactor file access to use fs-safe primitives (#78255)
* refactor: use fs-safe primitives across file access

* fix: preserve invalid managed npm manifests

* fix: keep fs seams for startup metadata
2026-05-06 05:03:11 +01:00
Peter Steinberger
05eda57b3c refactor: migrate bundled plugins to message lifecycle 2026-05-06 01:46:42 +01:00
Peter Steinberger
093b2b9b5f test: speed extension and contract scenarios 2026-05-06 00:54:06 +01:00
Vincent Koc
fa1d826a41 test(matrix): cover native Windows file semantics 2026-05-04 09:20:02 -07:00
Eva
8afc9ef73c [plugin sdk] Harden finalize retry and run context cleanup (#75600)
Merged via squash.

Prepared head SHA: ec58a6212b
Co-authored-by: 100yenadmin <239388517+100yenadmin@users.noreply.github.com>
Co-authored-by: jalehman <550978+jalehman@users.noreply.github.com>
Reviewed-by: @jalehman
2026-05-04 07:04:22 -07:00
Peter Steinberger
fa689295c6 fix: resolve small triage issues 2026-05-04 07:38:42 +01:00
Vincent Koc
02b9dbde39 fix(matrix): scope progress tool status config 2026-05-03 20:57:16 -07:00
Vincent Koc
1c2eda206e fix(matrix): bind approval reactions before option emoji 2026-05-03 18:52:01 -07:00
Vincent Koc
c979ed3a3a fix(channels): pass raw progress detail to drafts 2026-05-03 18:43:11 -07:00
Peter Steinberger
36c047c026 fix(channels): unify progress draft line formatting 2026-05-04 00:50:09 +01:00
Vincent Koc
d2ba09b301 fix(channels): skip empty progress drafts 2026-05-03 16:44:21 -07:00
Peter Steinberger
392897304c fix(channels): delay progress drafts until work is visible 2026-05-04 00:22:13 +01:00
Vincent Koc
8beda86416 fix(channels): expose progress draft config hints 2026-05-03 14:21:57 -07:00
Peter Steinberger
c33e578554 feat: add channel progress drafts
Adds unified progress-draft streaming for chat channels, with docs and per-channel regressions.
2026-05-03 22:01:08 +01:00
Vincent Koc
ae87f7800b test(matrix): isolate IndexedDB persistence fixtures 2026-05-03 03:18:00 -07:00
Alex Knight
f27ecffc0c matrix: persist approval reaction targets best-effort (#75586)
* matrix: persist approval reaction targets best-effort

* docs: refine matrix approval changelog
2026-05-03 17:17:01 +10:00
Peter Steinberger
8612af754b feat: simplify thread-bound session spawning 2026-05-02 06:58:07 +01:00
Peter Steinberger
43121fb096 fix: guard provider-prefixed delivery targets 2026-05-02 05:30:41 +01:00
Peter Steinberger
8043923910 refactor(plugins): remove extension jiti test hooks 2026-05-01 23:43:31 +01:00
Peter Steinberger
4fce56294d refactor(matrix): keep runtime wrapper native-only 2026-05-01 23:36:08 +01:00
Peter Steinberger
0bb52118e6 refactor(matrix): avoid jiti on packaged runtime path 2026-05-01 23:27:07 +01:00
Peter Steinberger
ed8f50f240 refactor: simplify plugin dependency handling
Simplify plugin installation and runtime loading around package-manager-owned dependencies, with Jiti reserved for local/TS fallback paths.

Also scans npm plugin install roots so hoisted transitive dependencies are covered by dependency denylist and node_modules symlink checks.
2026-05-01 21:32:22 +01:00
Peter Steinberger
18417f80ad refactor: annotate secret target registries 2026-05-01 20:38:03 +01:00
Peter Steinberger
d47055aa92 refactor: trim matrix helper exports 2026-05-01 17:35:57 +01:00
Peter Steinberger
0d7d1aa09c refactor: trim matrix helper exports 2026-05-01 15:53:27 +01:00
Peter Steinberger
73891eaca6 refactor: trim extension runtime barrels 2026-05-01 14:06:14 +01:00
Peter Steinberger
3b75898bee refactor: trim extension internal type exports 2026-05-01 14:00:05 +01:00
Peter Steinberger
7e8d95b413 fix: carry matrix dm allowlist state 2026-05-01 13:47:09 +01:00
Vincent Koc
f6a1d70080 fix(channels): pin dm main route owners 2026-05-01 05:06:13 -07:00
Peter Steinberger
90554ea048 refactor: prune stale extension helpers 2026-05-01 10:57:27 +01:00
Peter Steinberger
996e0ae2f2 refactor: remove stale extension helpers 2026-05-01 10:39:00 +01:00
Peter Steinberger
ffe67e9cdc refactor(channels): route inbound turns through kernel 2026-04-30 04:08:47 +01:00
Peter Steinberger
02ebac6250 refactor(channels): share turn dispatch results 2026-04-30 02:58:40 +01:00
Peter Steinberger
1ead1b2d18 refactor(channels): finish turn kernel migration 2026-04-30 01:31:00 +01:00
Peter Steinberger
9a9cd0c0ab refactor(channels): add shared turn kernel 2026-04-29 23:16:16 +01:00
Natalie K
86956f71e6 fix(matrix): close owner-side device verification loop on SAS confirm (#74542)
* fix(matrix): close owner-side device verification loop on SAS confirm

After SAS confirm via the `openclaw matrix verify confirm-sas` CLI, the
operator's Element X stayed in "Verifying…" because three things on the
bot side did not happen before the verb returned:

1. confirmVerificationSas didn't await the rust-crypto verifier promise.
   `Verifier.verify()` resolves only after both sides exchange MACs and
   the protocol fully settles, including cross-signing-key uploads
   triggered by `crossSignDevice`. Returning early meant Element X's
   next /keys/query saw an inconsistent state and the prompt persisted.

2. The 30s auto-confirm path (used when the operator initiates from
   their phone) explicitly passed `{ trustOwnDevice: false }`, so the
   bot never cross-signed its own device on this path. The check inside
   trustOwnDeviceAfterConfirmedSas already gates on isSelfVerification,
   so flipping the flag is safe — non-self requests remain a no-op.

3. The standalone `confirmMatrixVerificationSas` action did not call
   `trustOwnIdentityAfterSelfVerification` (only the higher-level
   `runMatrixSelfVerification` path did). Without that call, the bot
   had not signed the operator's master key, so Element X had no path
   to clear the prompt without a passive sync tick.

Three additive edits:

- verification-manager.ts (confirmVerificationSas): await
  session.verifyPromise after confirmSasForSession returns.
  verifyPromise is the .then().catch() chain set by
  ensureVerificationStarted, which already routes rejections into
  session.error, so awaiting it cannot double-throw.
- verification-manager.ts (maybeAutoConfirmSas): pass
  { trustOwnDevice: true } so the auto-confirm path also cross-signs
  the bot device for self-verifications.
- actions/verification.ts (confirmMatrixVerificationSas): mirror the
  trustOwnIdentityAfterSelfVerification call from
  completeMatrixSelfVerification when the returned summary indicates
  isSelfVerification.

Tests:
- verification-manager.test.ts: flipped the existing "auto-confirmed
  self-verification" assertion (now expects trustOwnDeviceAfterSas to
  be called); added two new tests for verifyPromise await and
  rejection-on-summary.error.
- actions/verification.test.ts: two new tests asserting
  confirmMatrixVerificationSas calls trustOwnIdentityAfterSelfVerification
  on self-verifications and not on remote verifications.

Verified end-to-end against matrix.thepolycule.ca (Synapse 1.145.0+ess.1,
MAS-fronted): after `verify confirm-sas`, Element X's device-list view
shows the bot device with a green shield and no pending Verify prompt.

* fix(matrix): guard owner trust after failed SAS verification

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-04-29 19:42:45 +01:00
Vincent Koc
1b25dcf57a docs(types): mark legacy hook surfaces deprecated 2026-04-28 23:31:32 -07:00
Peter Steinberger
bd1d1f0f2b fix: align open DM allowlist policy (#74112)
* fix: harden telegram open dm allowlist merging

* fix: align open dm allowlist policy
2026-04-29 06:52:12 +01:00
Peter Steinberger
a68cc94c36 fix: resolve main ci shard failures 2026-04-28 05:52:19 +01:00
Peter Steinberger
af7f651db3 refactor(plugin-sdk): retire reserved helper exports 2026-04-28 05:21:57 +01:00
Peter Steinberger
1e3ce10e27 refactor(plugin-sdk): remove unused reserved helper exports 2026-04-28 05:00:53 +01:00
Gustavo Madeira Santana
795e58acf2 test(matrix): cover approval metadata delivery 2026-04-27 23:10:51 -04:00
Peter Steinberger
e1acb61317 refactor: expose SDK test helper subpaths 2026-04-28 03:28:17 +01:00
Peter Steinberger
f34b41f198 refactor: split plugin sdk test helpers 2026-04-28 01:14:19 +01:00
Peter Steinberger
e27c32b9b0 refactor(plugin-sdk): publish route helpers 2026-04-28 01:13:01 +01:00
Peter Steinberger
8057561cee refactor: promote plugin test helpers to sdk 2026-04-28 00:55:11 +01:00
Peter Steinberger
0df6e5a473 refactor: expose plugin test helpers via sdk 2026-04-27 23:45:26 +01:00
Peter Steinberger
a8c548f4f3 test: route extension tests through sdk seams 2026-04-27 22:34:21 +01:00
Gustavo Madeira Santana
24068f19c6 matrix: stream tool progress in previews 2026-04-27 16:21:34 -04:00