Josh Avant
91a18c05f1
fix(imessage): keep message actions within the current conversation ( #107773 )
...
* fix(imessage): bind message actions to conversations
* fix(imessage): keep resource helpers internal
* fix(imessage): clarify message ID binding guidance
* test(imessage): isolate resource binding cache
* fix(imessage): preserve email conversation aliases
2026-07-14 18:50:20 -07:00
Peter Steinberger
d91073eb1d
refactor(plugins): remove internal test exports ( #107859 )
...
* refactor(imessage): privatize reply-cache reset
* refactor(vault): privatize CLI test helpers
* refactor(voice-call): privatize test seams
* refactor(zalo): privatize monitor test seams
* refactor(zalouser): test through provider boundaries
* chore(deadcode): refresh export baseline
2026-07-14 17:13:38 -07:00
Peter Steinberger
f81f9d8570
chore: enforce max-lines suppression ratchet ( #107315 )
...
* ci: enforce max-lines suppression ratchet
* chore: prune stale max-lines suppression
* fix: close max-lines ratchet enforcement gaps
* fix: harden max-lines ratchet checks
* fix(ci): satisfy max-lines ratchet checks
* style: format max-lines declarations
* fix(ci): match oxlint suppression grammar
* test: isolate max-lines git fixtures
* chore: prune resolved max-lines debt
* test: skip newline path fixture on Windows
* fix: harden max-lines suppression ratchet
* chore: refresh max-lines baseline
* fix: close max-lines ratchet bypasses
* fix: derive ratchet base from PR merge tree
* fix: support older Git in staged ratchet
* fix: align max-lines declarations and baseline
* chore: refresh max-lines baseline for current main
* fix: exclude generated wizard locales from max-lines
* chore: prune resolved max-lines debt
2026-07-14 09:27:02 -07:00
Peter Steinberger
834810b3d6
refactor(imessage): trim internal exports ( #107196 )
...
* refactor(imessage): trim internal exports
* test(imessage): type inbound dispatch mock
2026-07-13 23:05:24 -07:00
Peter Steinberger
db02a96c4c
refactor(process): route bounded commands through Execa ( #106495 )
...
* refactor(process): centralize bounded command execution
* refactor(process): migrate core one-shot commands
* refactor(plugins): migrate one-shot commands
* fix(process): await Windows tree termination
* chore(plugin-sdk): refresh process runtime surface
* refactor(process): migrate remaining bounded commands
* refactor(process): normalize command result handling
* refactor(process): split execution responsibilities
* chore(plugin-sdk): refresh API baseline
* chore(process): remove release-owned changelog entry
* fix(process): narrow binary command input checks
* fix(process): cap sandbox command output
* fix(qa-lab): preserve exact node probe env
* chore(ci): refresh dead export baseline
* fix(process): preserve force-kill command deadlines
* fix(process): avoid post-exit timeout reclassification
* test(process): update scp staging wrapper mock
* test(process): update remaining wrapper mocks
* refactor(qa-lab): preserve Execa tar execution
2026-07-13 11:07:35 -07:00
Peter Steinberger
7a456e362d
feat(channels): add typed cross-surface approval actions ( #103679 )
...
* fix(gateway): approval registry hardening and protocol-surface follow-ups
Follow-up delta to the merged #103579 head, rebased onto current main:
- gateway-protocol wire types derive from owner-module schema consts
(types.ts tombstone) and ProtocolSchemas leaves the package index so the
public plugin-sdk d.ts graph tree-shakes the registry declaration
- approval access authority follows the operator.approvals scope tier with
reviewerDeviceIds as the opt-in restriction (cross-surface
first-answer-wins; requester identity gates only legacy adapters)
- plugin node.invoke approvals register directly so unrenderable
presentations fail closed before request routing
- exec-approval manager reconciliation with #103515 revocation hardening
(resolution source attribution, one-shot ask-fallback consumption)
- surface-report pins and plugin-sdk API baseline refreshed; Swift models
regenerated
* feat(channels): add typed operator approval actions
Squash-rebased #103679 segment onto the durable-approval-registry tip on
current main. Typed approval/command/select presentation actions replace
raw-string inference across slack/telegram/discord/matrix/imessage/whatsapp,
approval.resolve carries an explicit kind, and channel adapters map native
callback envelopes through the typed action registry.
Drift reconciliation: deprecated buildExecApprovalInteractiveReply assertions
dropped (#104650 removed the shims); worker_environments bootstrap-column
migration kept alongside the approval resolution_ref backfill; plugin-sdk API
baseline regenerated.
(cherry picked from commit 68765a5d39d2118c88a7a54d00387337912d4494)
(cherry picked from commit 8642ac12af142e4b751f4f30d4b114615e7e5f66)
(cherry picked from commit 036c4bc39499925fc03de16ec9302e346769350a)
(cherry picked from commit 19dc350d6bc34e29a5169c6bc80971b0ad12adde)
(cherry picked from commit fc978b0bad86aef421c79f6a211b25cc1b743c01)
(cherry picked from commit 10de4d1ed5071f9be6ad1ee5d1e32c0fa8c9d11c)
(cherry picked from commit 9a664ced1b1fa740172b258f355f1a82925ae41c)
(cherry picked from commit c5ff69abbf444139e9e007bfa45beb0f00ffea54)
(cherry picked from commit d466a80795 )
(cherry picked from commit f5b4fe40dd5c961322f8553cc80b2fdfb3f6503e)
(cherry picked from commit 7340b4749a4cc4c72f7a41cce1bc9cb550cae038)
(cherry picked from commit a151f41808f23ae60b10305ccd2bc959b9169a86)
* fix(approvals): preserve typed transport ownership
* test(imessage): narrow chunked approval text
* refactor(protocol): remove retired type tombstone
* fix(plugin-sdk): align surface budgets after rebase
* docs(changelog): note typed operator approvals
* docs(changelog): defer typed approval release note
2026-07-11 18:31:05 -07:00
cxbAsDev
08abf83a66
fix(imessage): handle CLI child stdout/stderr stream errors ( #101401 )
...
* fix(imessage): handle CLI child stdout/stderr stream errors
* fix(imessage): stop CLI children after stream failures
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-07 08:19:52 +01:00
Omar Shahine
91f5a65df9
fix(imessage): plain-send fallback for threaded replies + db-scoped recovery cursor ( #99638 ) ( #100446 )
...
* fix(imessage): retry unthreaded when a threaded reply is unsupported (#99638 )
* fix(imessage): scope downtime-recovery cursor to the watched database (#99638 )
---------
Co-authored-by: Omar Shahine <10343873+omarshahine@users.noreply.github.com >
2026-07-05 14:58:38 -07:00
Peter Steinberger
1f484a8dbd
test: speed up and stabilize full suite
2026-07-05 08:00:23 -04:00
Omar Shahine
cc954798f2
fix(imessage): honor disabled reply actions ( #93137 )
...
Co-authored-by: Omar Shahine <10343873+omarshahine@users.noreply.github.com >
2026-06-15 11:53:35 +08:00
Omar Shahine
bfccbc3fee
fix(imessage): harden outbound send transport ( #91783 )
...
Merged via squash.
Prepared head SHA: 39ea25767b
Proof:
- Focused tests, docs/config generation, lint/type/doc checks passed before merge.
- ClawSweeper re-review marked proof and patch quality platinum after lobster live send proof.
- Maintainer accepted the `channels.imessage.sendTransport` config surface and compatibility-risk tradeoff.
Lobster proof id: openclaw-lobster-live-proof-c74895c2-b629-4bb0-abcb-e6521069b3d8
Reviewed-by: @omarshahine
2026-06-09 19:09:15 -07:00
colmbrogan
7e3100a120
fix(imessage): persist echo markers before send ( #88969 )
...
Persist short-lived pending iMessage echo markers before bridge sends so self-chat reflected rows cannot race ahead of post-send echo persistence. Keep monitor cache writes post-send, keep pending text out of generic echo matching, and observe skipped from-me catchup rows for self-chat dedupe.\n\nThanks @colmbrogan.
2026-06-08 22:25:25 -07:00
Omar Shahine
6c35c0d965
fix(imessage): self-explaining private-API failures and dedicated send timeout ( #91041 )
...
Append imsg's own status message (SIP / library validation / macOS 26 AMFI gate)
to iMessage private-API blocked-action errors so operators see the real blocker
instead of a generic "run imsg launch". Add a dedicated 150s default timeout for
iMessage send RPCs (explicit opts and probeTimeoutMs still win) so macOS 26
bridge stalls are not aborted mid-send.
Staged mitigation: the longer wait fully activates once the companion bridge
timeout (openclaw/imsg#139 ) ships; on current imsg the bridge still returns at
its own 10s, so there is no regression. Diagnostics half is live-proven; the
delayed-send timeout is covered by source + unit proof + maintainer waiver.
2026-06-07 14:07:31 -07:00
Omar Shahine
cd806101cd
fix(imessage): send TTS audio as voice messages ( #90853 )
...
Merged via squash.
Prepared head SHA: 258d2d73f3
Reviewed-by: @omarshahine
2026-06-06 11:49:50 -07:00
Peter Steinberger
6868cde4d4
docs: document large extension sources
2026-06-04 21:40:44 -04:00
Peter Steinberger
3491834d49
Migrate iMessage monitor state to SQLite ( #88797 )
...
* refactor: move imessage monitor state to sqlite
* test: use OpenClaw temp root in iMessage state helper
* test: avoid pending promise lint in chat tests
* test: harden gateway ci flakes
* test: align session list merge expectation
2026-06-01 00:19:51 +01:00
Peter Steinberger
7617d062fd
chore(lint): fix rebased lint violations
2026-05-31 18:59:02 +01:00
Peter Steinberger
304e2c83c0
chore(lint): enable stricter oxlint rules
2026-05-31 18:59:02 +01:00
Ho Lim
044f7f3790
fix: route iMessage DM media through attachment handoff ( #87904 )
...
* fix: route iMessage DM media through attachment handoff
* fix: close iMessage caption follow-up clients
* test: stabilize iMessage timeout recovery checks
* fix(imessage): keep attachment reply-cache identifiers aligned
* fix(imessage): preserve service for media handoff
* fix(imessage): prefer caption ids for placeholder attachments
* fix(imessage): preserve region fallback for media handles
* fix(imessage): retain chat id attachment cache scope
* fix(imessage): avoid premature caption echoes
---------
Co-authored-by: Omar Shahine <10343873+omarshahine@users.noreply.github.com >
2026-05-31 09:00:00 -07:00
Vincent Koc
50e6bd307d
test(agents): narrow Codex bootstrap assertions
2026-05-28 22:14:38 +02:00
Peter Steinberger
aab5410bd5
test: speed up slow test suite ( #87611 )
...
* test: speed up slow test suite
* test: preserve fake timer cleanup hooks
* test: avoid timeout readiness race
* test: satisfy reply test types
* test: restore runner and image coverage
* test: restore final media runner path
* test: make cli auth status fixture deterministic
* test: repair runtime alias fixtures
2026-05-28 13:20:19 +01:00
Kevin Lin
40bca6d8bb
fix(imessage): suppress duplicate native exec approvals
...
Fix iMessage native exec approval routing so approval prompts bind to the sent GUID without duplicate sends after RPC timeout. Also keeps chat.db GUID recovery on the local imsg path while avoiding local DB recovery for configured or detected SSH wrappers.
Thanks @kevinslin.
2026-05-27 23:55:28 +01:00
Omar Shahine
17f7ef5c0f
fix(imessage): send group media via attachment command ( #86770 )
...
* fix(imessage): send group media via attachment command
* fix(imessage): preserve media rpc fallback
---------
Co-authored-by: Omar Shahine <10343873+omarshahine@users.noreply.github.com >
2026-05-25 23:31:27 -07:00
Omar Shahine
5a33378f9c
revert: iMessage group media attachment command ( #86734 )
...
Co-authored-by: Omar Shahine <10343873+omarshahine@users.noreply.github.com >
2026-05-25 19:47:16 -07:00
Omar Shahine
f32273257c
fix(imessage): send group media via attachment command
...
* fix(imessage): send chat media via attachment command
* fix(imessage): satisfy bundled lint
---------
Co-authored-by: Omar Shahine <10343873+omarshahine@users.noreply.github.com >
2026-05-25 19:24:37 -07:00
homer-byte
c3e5d85ce1
fix(imessage): avoid visible media placeholder text ( #81209 )
...
Keep media-only iMessage sends from delivering visible <media:image> text while preserving a non-visible echo key for self-echo dedupe. Thanks @homer-byte.
2026-05-13 09:03:05 -07:00
Shakker
bf96ecc4a5
test: tighten imessage send receipt assertions
2026-05-10 18:20:12 +01:00
Shakker
92d7ab6845
test: tighten channel empty array assertions
2026-05-09 04:58:00 +01:00
Peter Steinberger
05eda57b3c
refactor: migrate bundled plugins to message lifecycle
2026-05-06 01:46:42 +01:00
Peter Steinberger
33d31e2b0d
test: collapse imessage test suites
2026-03-25 05:21:16 +00:00
scoootscooob
0ce23dc62d
refactor: move iMessage channel to extensions/imessage ( #45539 )
2026-03-14 02:44:23 -07:00