Commit Graph

10959 Commits

Author SHA1 Message Date
Peter Steinberger
7bb2153fb2 test: dedupe openai tts mock reads 2026-05-13 06:23:44 +01:00
homer-byte
ba1f4271e8 fix(imessage): keep pasted links without preview media (#79374)
Thanks @homer-byte.
2026-05-12 22:20:44 -07:00
Peter Steinberger
6af82efcad test: dedupe feishu chat mock reads 2026-05-13 06:10:09 +01:00
Peter Steinberger
54c633db36 test: dedupe feishu docx mock reads 2026-05-13 06:09:06 +01:00
Peter Steinberger
73e0c51a5a test: dedupe vydra fetch mock reads 2026-05-13 06:07:49 +01:00
Peter Steinberger
5c67c93ac9 test: dedupe brave fetch mock read 2026-05-13 06:01:48 +01:00
Peter Steinberger
8fd0f9965e test: dedupe google chat mock reads 2026-05-13 05:56:42 +01:00
Ayaan Zaidi
306b51011f fix(telegram): handle legacy rotated offsets 2026-05-13 10:12:31 +05:30
sxxtony
cb93c0f8f5 fix(telegram): factor offset rotation handling into typed surfaces
Builds on the prior commit by introducing the typed surfaces the rest of
the plugin (and `openclaw doctor`-style consumers) can reuse:

- `inspectTelegramUpdateOffset` returns a discriminated union
  (`absent | valid | rotated`) so callers can act on the rotation event
  without re-implementing the bot-id / fingerprint comparison.
  `readTelegramUpdateOffset` is now a thin adapter over it.
- `TelegramOffsetRotationReason` is exported as a named type alias so
  downstream code can switch over it exhaustively.
- New `TelegramOffsetRotationHandler` class encapsulates the
  "log warning + delete stale file" side effect that the monitor needs at
  startup, plus a `createTelegramOffsetRotationHandler` factory and a
  pure `formatTelegramOffsetRotationMessage` helper used to keep the
  wording consistent.
- `monitor.ts` now constructs the handler once per polling startup
  instead of inlining the closure, and the new surfaces are re-exported
  through `monitor-polling.runtime.ts`.

Unit coverage:
  pnpm test extensions/telegram/src/update-offset-store.test.ts \
            extensions/telegram/src/offset-rotation-handler.test.ts \
            extensions/telegram/src/monitor.test.ts
2026-05-13 10:12:31 +05:30
sxxtony
290d3879eb fix(telegram): detect same-bot token rotation via fingerprinted offset state
Closes #80653.

Persist a non-reversible SHA-256 fingerprint of the bot token alongside the
bot id in the long-poll update offset store (version 3). On read, treat the
persisted offset as stale when the fingerprint diverges from the current
token, even when the bot id still matches. This covers the BotFather
`/revoke` case where the bot id is unchanged but the secret rotates -- the
in-process update tracker would otherwise silently skip any new updates
whose `update_id` is `<=` the restored watermark.

The legacy v2 (bot-id-only) layout still parses, and offsets are preserved
when the bot id matches so existing installs don't lose a watermark on
upgrade; the next persistence upgrades the file to v3 and enables rotation
detection going forward.

`readTelegramUpdateOffset` now reports each rotation through a new
`onRotationDetected` callback. `monitor.ts` uses it to log a clear warning
naming the previous/new bot id and the discarded offset, and to delete the
stale file rather than waiting for the first update to overwrite it.

Acceptance suites pass:
  pnpm test extensions/telegram/src/update-offset-store.test.ts \
            extensions/telegram/src/bot-update-tracker.test.ts \
            extensions/telegram/src/monitor.test.ts \
            extensions/telegram/src/bot.create-telegram-bot.test.ts \
            extensions/telegram/src/token.test.ts \
            extensions/telegram/src/polling-lease.test.ts
2026-05-13 10:12:31 +05:30
Peter Steinberger
5592132f56 test: dedupe foundry provider mock read 2026-05-13 05:31:55 +01:00
Pavan Kumar Gondhi
3d93174c43 browser: enforce navigation checks for act interactions [AI] (#81070)
* fix: apply browser navigation policy to act interactions

* addressing ci

* docs: add changelog entry for PR merge
2026-05-13 09:59:36 +05:30
rendrag-git
3b361cf51c fix: discover self-hosted provider wildcards 2026-05-13 00:27:39 -04:00
Peter Steinberger
d643d64194 test: dedupe memory dreaming mock read 2026-05-13 05:25:01 +01:00
Peter Steinberger
b52a36d6e0 test: dedupe memory cli mock reads 2026-05-13 04:44:08 +01:00
Peter Steinberger
280d7931c1 test: dedupe memory dreaming mock reads 2026-05-13 04:28:50 +01:00
Peter Steinberger
5db2bf75c4 test: dedupe memory qmd mock reads 2026-05-13 04:27:38 +01:00
Peter Steinberger
936989a88b test: dedupe codex projector mock reads 2026-05-13 04:17:31 +01:00
Peter Steinberger
01fc684502 test: dedupe discord component mock reads 2026-05-13 04:16:05 +01:00
Peter Steinberger
32103aa3fd test: dedupe feishu doc mock reads 2026-05-13 04:14:38 +01:00
Peter Steinberger
da23f4572d test: dedupe matrix handler mock reads 2026-05-13 04:13:25 +01:00
Peter Steinberger
a08a38d4d9 test: dedupe mattermost monitor mock reads 2026-05-13 04:11:41 +01:00
Peter Steinberger
e566e817fb test: dedupe openai codex mock reads 2026-05-13 04:10:17 +01:00
Peter Steinberger
efc3e072a4 test: dedupe qqbot adapter mock reads 2026-05-13 04:09:05 +01:00
Peter Steinberger
a4514860e5 test: dedupe telegram command mock reads 2026-05-13 04:06:53 +01:00
Peter Steinberger
a5f5504b0d test: dedupe telegram monitor mock reads 2026-05-13 04:05:30 +01:00
Peter Steinberger
85eb8d47d4 test: dedupe vydra provider mock reads 2026-05-13 04:04:12 +01:00
Peter Steinberger
e1f24786f4 test: dedupe whatsapp login mock reads 2026-05-13 04:02:31 +01:00
Peter Steinberger
12f36b9a5a test: dedupe whatsapp allowlist mock reads 2026-05-13 04:01:19 +01:00
Peter Steinberger
a37c201776 test: dedupe whatsapp monitor mock reads 2026-05-13 03:59:43 +01:00
Peter Steinberger
38e1d68d7a test: dedupe discord process mock reads 2026-05-13 03:58:10 +01:00
Peter Steinberger
3375473e2b test: dedupe matrix cli mock reads 2026-05-13 03:56:49 +01:00
Peter Steinberger
b3260b1d15 test: dedupe telegram media mock reads 2026-05-13 03:55:27 +01:00
Peter Steinberger
889c1d7c15 test: dedupe whatsapp media mock reads 2026-05-13 03:54:10 +01:00
Peter Steinberger
eeecb48775 test: dedupe browser tool mock reads 2026-05-13 03:52:46 +01:00
Peter Steinberger
7159dab78d test: dedupe codex approval mock reads 2026-05-13 03:50:11 +01:00
Peter Steinberger
2edb8dede8 test: dedupe matrix send mock reads 2026-05-13 03:48:40 +01:00
Peter Steinberger
b8a27720f2 test: dedupe telegram gateway mock reads 2026-05-13 03:47:20 +01:00
Peter Steinberger
130b9bb2c1 test: dedupe browser cli mock reads 2026-05-13 03:45:26 +01:00
Peter Steinberger
ff7beea3da test: dedupe feishu routing mock reads 2026-05-13 03:43:41 +01:00
Peter Steinberger
cb613022ff test: dedupe telegram send mock reads 2026-05-13 03:42:22 +01:00
Peter Steinberger
4c663056d9 test: dedupe qa matrix mock reads 2026-05-13 03:40:17 +01:00
Peter Steinberger
6b77b8d978 test: dedupe discord voice mock reads 2026-05-13 03:37:28 +01:00
Peter Steinberger
a20d253819 test: dedupe active memory mock reads 2026-05-13 03:35:41 +01:00
Marcus Castro
81a3de1d9d fix(whatsapp): drain debounced inbound before close (#81246)
* fix(whatsapp): drain debounced inbound before close

* docs(changelog): note WhatsApp debounce close drain
2026-05-12 23:13:38 -03:00
Pavan Kumar Gondhi
b7e0decf0c Restrict chat sender allowlist matching [AI] (#80898)
* fix: restrict chat sender allowlist matching

* fix: restrict chat sender allowlist matching

* addressing codex review

* fix: complete sender allowlist root cause

* addressing codex review

* addressing codex review

* fix: complete root-cause handling

* addressing review-skill

* addressing codex review

* addressing review-skill

* addressing codex review

* addressing codex review

* fix: complete chat sender allowlist handling

* addressing codex review

* fix: complete root-cause handling

* addressing codex review

* fix: complete root-cause handling

* addressing codex review

* fix: cover sender matcher conversation target opt-in

* addressing review-skill

* addressing codex review

* fix: require explicit chat target sender matching

* addressing review-skill

* addressing codex review

* addressing codex review

* fix: require explicit chat target sender matching

* addressing codex review

* fix: require explicit chat target sender matching

* addressing codex review

* addressing codex review

* fix: require explicit chat target sender matching

* docs: add changelog entry for PR merge
2026-05-13 07:16:27 +05:30
Sarah Fortune
48529f1a96 feat(onboard): offer codex migration after harness install (#81192)
Add a post-install seam so the wizard can prompt the user to import their
existing Codex CLI state (skills, archived config/hooks, advisory cached
plugins) through the existing `openclaw migrate codex` flow once the
harness plugin is in place. Fires on both fresh installs and repair runs;
the user can decline at any time.

Trigger sites, both routing through one helper:

- src/plugins/provider-auth-choice.ts: after
  `ensureCodexRuntimePluginForModelSelection` reports `installed: true`,
  dynamically import `offerPostInstallMigrations` and call it before the
  wizard moves on.
- src/commands/onboard-non-interactive/local/auth-choice.plugin-providers.ts:
  same call shape with `nonInteractive: true`, so the helper emits a hint
  line only and never mutates state.

Helper (src/wizard/setup.post-install-migration.ts) is generic, not
Codex-hardcoded — it resolves migration providers via the manifest
`migrationProviders` contract, filters to providers owned by plugins the
caller flags as installed in this onboarding step, runs `provider.detect`,
and on TTY hands accepted runs to `migrateDefaultCommand`. All detect,
prompt, and migrate failures are swallowed so onboarding never aborts on
this optional offer.

Also harden the Codex app-server subprocess lifecycle now that `detect()`
runs from a hotter onboarding path: isolate the plugin-install
`plugin/read` call (extensions/codex/src/migration/apply.ts) and have the
isolated request wait for child exit with a SIGKILL fallback
(extensions/codex/src/app-server/request.ts) so parents are not held open
by an orphaned codex binary.

Tests:

- src/wizard/setup.post-install-migration.test.ts (new, 10 cases)
- src/commands/onboard-non-interactive/local/auth-choice.plugin-providers.test.ts
  extended with hint-call assertions and a not-required-no-offer case.
2026-05-12 16:51:27 -07:00
Peter Steinberger
413580bef2 test: dedupe qa lab live gateway mock reads 2026-05-12 22:53:58 +01:00
Peter Steinberger
ec2944dc82 test: dedupe qa lab agent process mock reads 2026-05-12 22:52:33 +01:00
Solomon Neas
314903417f fix(memory-core): prevent staged dream candidates from leaking into MEMORY.md (#68774)
* fix(memory-core): prevent staged dream candidates from leaking into MEMORY.md

* fix(memory-core): correct PromotionComponents shape in dream-fence test fixture
2026-05-12 14:07:43 -07:00