Peter Steinberger
fd75d214f2
style(extensions): format channel integration updates
2026-04-04 06:02:37 +01:00
Vincent Koc
2687a49575
refactor(line): lazy-load channel runtime seams
2026-04-04 12:26:20 +09:00
Vincent Koc
0737816010
refactor(line): narrow channel runtime imports
2026-04-04 11:59:38 +09:00
Peter Steinberger
ab318de8b7
test(plugins): finish moving contract coverage
2026-04-04 00:11:39 +01:00
Peter Steinberger
e4b5027c5e
refactor(plugins): move extension seams into extensions
2026-04-04 00:10:16 +01:00
Peter Steinberger
40ae49effa
fix(ci): normalize line default-account setup checks
2026-04-03 21:39:01 +01:00
Tak Hoffman
183601c347
fix: honor line default setup status
2026-04-03 15:32:44 -05:00
Tak Hoffman
7c25af83e4
fix: honor line monitor default account
2026-04-03 13:55:44 -05:00
Tak Hoffman
961d8eb095
fix: honor line default runtime account
2026-04-03 13:54:01 -05:00
Peter Steinberger
8be2dea382
test: trim more extension partial mocks
2026-04-03 19:31:32 +01:00
Peter Steinberger
6eca4e0136
test: trim extension partial mocks
2026-04-03 19:28:19 +01:00
Peter Steinberger
ab96520bba
refactor(plugins): move channel behavior into plugins
2026-04-03 19:09:20 +01:00
Tak Hoffman
4edf6a2c7d
fix: honor line default account setup policy
2026-04-03 12:42:18 -05:00
Tak Hoffman
51f6bc4940
fix: honor selected account in setup status
2026-04-03 11:50:09 -05:00
Tak Hoffman
27ced5c1d3
fix: honor line setup dm policy accounts
2026-04-03 10:52:03 -05:00
Vincent Koc
0ecf84524d
fix(ci): restore line runtime seams
2026-04-03 23:19:39 +09:00
Vincent Koc
efeee6f921
fix(ci): use plugin registry test bridges
2026-04-03 23:03:15 +09:00
Vincent Koc
9b83e462cf
test(channels): use narrow active registries in sticky tests
2026-04-03 22:57:16 +09:00
Vincent Koc
3b358414d3
test(channels): use direct contract helper imports
2026-04-03 22:46:58 +09:00
Peter Steinberger
f59d0eac68
refactor(plugin-runtime): remove plugin-specific core seams
2026-04-03 13:08:39 +01:00
Peter Steinberger
2766c27b2a
refactor(plugin-sdk): genericize web channel runtime seams
2026-04-03 11:17:28 +01:00
Peter Steinberger
847faa3d04
test: trim extension test import churn
2026-04-03 04:41:08 +01:00
Vincent Koc
19724340f8
perf(test): narrow line reply context import
2026-04-02 00:16:03 +09:00
Peter Steinberger
035028208f
test: trim line webhook/slack setup prompts
2026-04-01 08:02:26 +01:00
Peter Steinberger
709668ccd1
test: trim line/twitch setup validations
2026-04-01 07:46:25 +01:00
Peter Steinberger
1f97f907b2
test: centralize registry-backed channel contracts
2026-04-01 01:53:23 +01:00
Peter Steinberger
b910cc5869
test: remove extension manifest and core-extension wrappers
2026-04-01 01:44:43 +01:00
Vincent Koc
57c47d8c7f
fix(line): bound preverify webhook concurrency ( #58199 )
...
* fix(line): bound preverify webhook concurrency
* test(line): cover preauth release timing
* fix(line): release webhook preauth slots earlier
2026-03-31 19:34:25 +09:00
Peter Steinberger
f7285e0a9e
test: speed up extension suites
2026-03-31 02:25:02 +01:00
Peter Steinberger
8861cdbb6f
refactor(plugin-sdk): untangle extension test seams
2026-03-29 23:43:53 +01:00
Peter Steinberger
8e0ab35b0e
refactor(plugins): decouple bundled plugin runtime loading
2026-03-29 09:10:38 +01:00
Peter Steinberger
c48e0f8e6a
style: normalize import order and formatting
2026-03-29 16:33:22 +09:00
Jackjin
a0407c7254
fix(line): preserve underscores inside words in stripMarkdown ( #47465 )
...
Fixes #46185 .
Verified:
- pnpm install --frozen-lockfile
- pnpm build
- pnpm test -- extensions/line/src/markdown-to-line.test.ts src/tts/prepare-text.test.ts
Note: `pnpm check` currently fails on unchanged `extensions/microsoft/speech-provider.test.ts` lines 108 and 139 on the rebased base, outside this PR diff.
2026-03-28 21:31:09 -05:00
Tak Hoffman
f1970b8aef
fix(line): normalize canonical ACP targets ( #56713 )
2026-03-28 21:05:34 -05:00
Tak Hoffman
6f7ff545dd
fix(line): add ACP binding parity ( #56700 )
...
* fix(line): support ACP current-conversation binding
* fix(line): add ACP binding routing parity
* docs(changelog): note LINE ACP parity
* fix(line): accept canonical ACP binding targets
2026-03-28 20:52:31 -05:00
Masato Hoshino
9449e54f4f
feat(line): add outbound media support for image, video, and audio
...
pnpm install --frozen-lockfile
pnpm build
pnpm check
pnpm vitest run extensions/line/src/channel.sendPayload.test.ts extensions/line/src/send.test.ts extensions/line/src/outbound-media.test.ts
Co-authored-by: masatohoshino <246810661+masatohoshino@users.noreply.github.com>
Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com>
2026-03-28 20:51:16 -05:00
Peter Steinberger
148a65fe90
refactor: share webhook channel status helpers
2026-03-29 02:11:22 +01:00
karesansui
acbdafc4f4
fix: propagate webhook mode to health monitor snapshot
...
Webhook channels (LINE, Zalo, Nextcloud Talk, BlueBubbles) are
incorrectly flagged as stale-socket during quiet periods because
snapshot.mode is always undefined, making the mode !== "webhook"
guard in evaluateChannelHealth dead code.
Add mode: "webhook" to each webhook plugin's describeAccount and
propagate described.mode in getRuntimeSnapshot.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-29 02:01:25 +01:00
Peter Steinberger
acca306665
fix: polish LINE status snapshot checks ( #45701 ) (thanks @tamaosamu)
2026-03-29 00:57:04 +00:00
劉超
03941e2dbf
fix(line): use configured field in collectStatusIssues instead of raw token
...
collectStatusIssues previously checked account.channelAccessToken directly,
but this field is stripped by projectSafeChannelAccountSnapshotFields for
security. This caused 'openclaw status' to always report WARN even when the
token is valid and the LINE provider starts successfully.
Use account.configured instead, which is already computed by
buildChannelAccountSnapshot and correctly reflects whether credentials
are present. This is consistent with how other channels (e.g. Telegram)
implement their status checks.
Fixes #45693
2026-03-29 00:57:04 +00:00
Peter Steinberger
fcc9fd1623
fix: land LINE timing-safe signature validation ( #55663 ) (thanks @gavyngong)
2026-03-29 00:43:17 +00:00
gavyngong
7626d18c64
fix(line): eliminate timing side-channel in HMAC signature validation
...
Pad both buffers to equal length before constant-time comparison.
Key fix: call timingSafeEqual unconditionally and store the result
before the && length check, ensuring the constant-time comparison
always runs regardless of buffer lengths. This avoids JavaScript's
&& short-circuit evaluation which would skip timingSafeEqual on
length mismatches, preserving the timing side-channel.
Changes:
- Pad hash and signature buffers to maxLen before comparison
- Store timingSafeEqual result before combining with length check
- Add explanatory comment about the short-circuit avoidance
2026-03-29 00:43:17 +00:00
Peter Steinberger
838013c87a
refactor: expose webhook request guard sdk seam
2026-03-28 05:17:19 +00:00
Tak Hoffman
b9415ca24b
fix(regression): preserve line pairing account context
2026-03-27 23:09:05 -05:00
Peter Steinberger
0d0d46f5e9
refactor: route line media temp paths through temp-path sdk
2026-03-28 03:57:46 +00:00
Peter Steinberger
491969efb0
refactor: route channel activity through channel runtime
2026-03-28 02:53:03 +00:00
Peter Steinberger
05719648a1
test(line): isolate status probe fallback import state
2026-03-28 02:31:39 +00:00
Peter Steinberger
4031bb1914
refactor: trim secret and ssrf helper runtime seams
2026-03-28 02:25:28 +00:00
Tak Hoffman
b9b84f2572
fix(regression): restore line cold-runtime status probing
2026-03-27 20:33:09 -05:00
Peter Steinberger
992b30604d
refactor: move extension-owned tests to extensions
2026-03-27 21:37:09 +00:00