cpojer
8b8451231c
chore: Typecheck test helper files.
2026-02-05 19:51:00 +09:00
mudrii
5d82c82313
feat: per-channel responsePrefix override ( #9001 )
...
* feat: per-channel responsePrefix override
Add responsePrefix field to all channel config types and Zod schemas,
enabling per-channel and per-account outbound response prefix overrides.
Resolution cascade (most specific wins):
L1: channels.<ch>.accounts.<id>.responsePrefix
L2: channels.<ch>.responsePrefix
L3: (reserved for channels.defaults)
L4: messages.responsePrefix (existing global)
Semantics:
- undefined -> inherit from parent level
- empty string -> explicitly no prefix (stops cascade)
- "auto" -> derive [identity.name] from routed agent
Changes:
- Core logic: resolveResponsePrefix() in identity.ts accepts
optional channel/accountId and walks the cascade
- resolveEffectiveMessagesConfig() passes channel context through
- Types: responsePrefix added to WhatsApp, Telegram, Discord, Slack,
Signal, iMessage, Google Chat, MS Teams, Feishu, BlueBubbles configs
- Zod schemas: responsePrefix added for config validation
- All channel handlers wired: telegram, discord, slack, signal,
imessage, line, heartbeat runner, route-reply, native commands
- 23 new tests covering backward compat, channel/account levels,
full cascade, auto keyword, empty string stops, unknown fallthrough
Fully backward compatible - no existing config is affected.
Fixes #8857
* fix: address CI lint + review feedback
- Replace Record<string, any> with proper typed helpers (no-explicit-any)
- Add curly braces to single-line if returns (eslint curly)
- Fix JSDoc: 'Per-channel' → 'channel/account' on shared config types
- Extract getChannelConfig() helper for type-safe dynamic key access
* fix: finish responsePrefix overrides (#9001 ) (thanks @mudrii)
* fix: normalize prefix wiring and types (#9001 ) (thanks @mudrii)
---------
Co-authored-by: Gustavo Madeira Santana <gumadeiras@gmail.com >
2026-02-04 16:16:34 -05:00
cpojer
425003417d
fix: Remove tsconfig.oxlint.json AGAIN.
2026-02-03 21:53:48 +09:00
Josh Palmer
991ed3ab58
Tests: stub SSRF DNS pinning ( #6619 ) (thanks @joshp123)
2026-02-02 16:38:25 +01:00
cpojer
6b0d6e2540
chore: We have a sleep at home. The sleep at home:
2026-02-02 21:44:02 +09:00
Peter Steinberger
81c68f582d
fix: guard remote media fetches with SSRF checks
2026-02-02 04:07:29 -08:00
David Iach
4e4ed2ea17
fix(security): cap Slack media downloads and validate Slack file URLs ( #6639 )
...
* Security: cap Slack media downloads and validate Slack file URLs
* Security: relax web media fetch cap for compression
* Fixes: sync pi-coding-agent options
* Fixes: align system prompt override type
* Slack: clarify fetchImpl assumptions
* fix: respect raw media fetch cap (#6639 ) (thanks @davidiach)
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-02-02 00:48:07 -08:00
cpojer
935a0e5708
chore: Enable typescript/no-explicit-any rule.
2026-02-02 16:18:09 +09:00
Leszek Szpunar
1bdd9e313f
security(web): sanitize WhatsApp accountId to prevent path traversal ( #4610 )
...
* security(web): sanitize WhatsApp accountId to prevent path traversal
Apply normalizeAccountId() from routing/session-key to
resolveDefaultAuthDir() so that malicious config values like
"../../../etc" cannot escape the intended auth directory.
Fixes #2692
* fix(web): check sanitized segment instead of full path in Windows test
* style(web): fix oxfmt formatting in accounts test
2026-02-01 14:29:53 -08:00
cpojer
f06dd8df06
chore: Enable "experimentalSortImports" in Oxfmt and reformat all imorts.
2026-02-01 10:03:47 +09:00
cpojer
59cfff02f6
chore: Emit TypeScript declaration files so that we can type-check the extensions folder soon.
2026-01-31 21:57:21 +09:00
cpojer
5ceff756e1
chore: Enable "curly" rule to avoid single-statement if confusion/errors.
2026-01-31 16:19:20 +09:00
cpojer
15792b153f
chore: Enable more lint rules, disable some that trigger a lot. Will clean up later.
2026-01-31 16:04:04 +09:00
Peter Steinberger
9a7160786a
refactor: rename to openclaw
2026-01-30 03:16:21 +01:00
Ayaan Zaidi
b6a3a91edf
fix: wire per-account dm scope guidance ( #3095 ) (thanks @jarvis-sam)
2026-01-28 11:42:33 +05:30
Peter Steinberger
6d16a658e5
refactor: rename clawdbot to moltbot with legacy compat
2026-01-27 12:21:02 +00:00
Peter Steinberger
875b018ea1
fix: stop sending tool summaries to channels
2026-01-25 11:54:29 +00:00
Seb Slight
d4f60bf16a
TTS: gate auto audio on inbound voice notes ( #1667 )
...
Co-authored-by: Sebastian <sebslight@gmail.com >
2026-01-25 04:35:20 +00:00
Peter Steinberger
458e731f8b
fix: newline chunking across channels
2026-01-25 04:11:36 +00:00
Peter Steinberger
4b6cdd1d3c
fix: normalize session keys and outbound mirroring
2026-01-24 11:57:11 +00:00
Peter Steinberger
dbf139d14e
test: cover explicit mention gating across channels
2026-01-24 11:09:33 +00:00
Peter Steinberger
d905ca0e02
fix: enforce explicit mention gating across channels
2026-01-24 11:09:33 +00:00
Dave Lauer
f9cf508cff
feat(heartbeat): add configurable visibility for heartbeat responses
...
Add per-channel and per-account heartbeat visibility settings:
- showOk: hide/show HEARTBEAT_OK messages (default: false)
- showAlerts: hide/show alert messages (default: true)
- useIndicator: emit typing indicator events (default: true)
Config precedence: per-account > per-channel > channel-defaults > global
This allows silencing routine heartbeat acks while still surfacing
alerts when something needs attention.
2026-01-24 09:07:03 +00:00
Peter Steinberger
350131b4d7
fix: improve web image optimization
2026-01-24 01:18:58 +00:00
Peter Steinberger
1113f17d4c
refactor: share reply prefix context
2026-01-23 23:34:30 +00:00
Peter Steinberger
521ea4ae5b
refactor: unify pending history helpers
2026-01-23 23:33:32 +00:00
Peter Steinberger
892197c43e
refactor: reuse ack reaction helper for whatsapp
2026-01-23 22:24:31 +00:00
Peter Steinberger
b77e730657
fix: add per-channel markdown table conversion ( #1495 ) (thanks @odysseus0)
2026-01-23 18:39:25 +00:00
Peter Steinberger
e817c0cee5
fix: preserve PNG alpha fallback ( #1491 ) (thanks @robbyczgw-cla)
2026-01-23 08:45:50 +00:00
Robby
e634791585
fix(media): preserve alpha channel for transparent PNGs ( #1473 )
2026-01-23 08:43:01 +00:00
Peter Steinberger
b63175d822
Merge remote-tracking branch 'origin/main' into feature/agent-avatar-support
2026-01-22 06:27:45 +00:00
Peter Steinberger
d425f1ebea
test: align envelope timestamp expectations ( #1329 ) (thanks @dlauer)
2026-01-22 05:51:42 +00:00
Peter Steinberger
a59ac5cf6f
feat: add agent identity avatars ( #1329 ) (thanks @dlauer)
2026-01-22 05:37:15 +00:00
Peter Steinberger
b60db040e2
test: align envelope timestamps with local tz
2026-01-22 04:49:41 +00:00
Peter Steinberger
0f7f7bb95f
fix: msteams attachments + plugin prompt hints
...
Co-authored-by: Christof <10854026+Evizero@users.noreply.github.com >
2026-01-22 03:37:29 +00:00
Echo
c415ccaed5
feat(sessions): add channelIdleMinutes config for per-channel session idle durations ( #1353 )
...
* feat(sessions): add channelIdleMinutes config for per-channel session idle durations
Add new `channelIdleMinutes` config option to allow different session idle
timeouts per channel. For example, Discord sessions can now be configured
to last 7 days (10080 minutes) while other channels use shorter defaults.
Config example:
sessions:
channelIdleMinutes:
discord: 10080 # 7 days
The channel-specific idle is passed as idleMinutesOverride to the existing
resolveSessionResetPolicy, integrating cleanly with the new reset policy
architecture.
* fix
* feat: add per-channel session reset overrides (#1353 ) (thanks @cash-echo-bot)
---------
Co-authored-by: Cash Williams <cashwilliams@gmail.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-01-21 19:10:31 +00:00
Tyler Yust
199fef2a5e
feat: enhance BlueBubbles group message handling by adding account-specific logging and improving typing signal conditions
2026-01-20 12:07:54 +00:00
Tyler Yust
14a072f5fa
feat: add support for setting group icons in BlueBubbles, enhancing group management capabilities
2026-01-20 12:07:54 +00:00
Peter Steinberger
6d5195c890
refactor: normalize cli command hints
2026-01-20 07:43:00 +00:00
Peter Steinberger
50fdd514ae
refactor(logging): split config + subsystem imports
2026-01-19 00:15:44 +00:00
Peter Steinberger
690bb192e6
style: format code
2026-01-18 19:36:46 +00:00
Peter Steinberger
744d1329cb
feat: make inbound envelopes configurable
...
Co-authored-by: Shiva Prasad <shiv19@users.noreply.github.com >
2026-01-18 18:50:37 +00:00
Peter Steinberger
ab340c82fb
fix: stabilize tests and logging
2026-01-18 18:43:31 +00:00
Peter Steinberger
65bed815a8
fix: resolve ci failures
2026-01-18 08:45:29 +00:00
Tyler Yust
ddcc05f5f4
fix: improve error handling for file URL processing
...
- Enhanced error handling in image reference detection to skip malformed file URLs without crashing.
- Updated media loading logic to throw an error for invalid file URLs, ensuring better feedback for users.
2026-01-18 08:15:21 +00:00
Tyler Yust
8c0e290db1
fix: enhance image reference detection and optimize image processing
...
- Added support for detecting file URLs in prompts using fileURLToPath for accurate path resolution.
- Updated image loading logic to default to JPEG format for optimized image processing.
- Improved error handling in image optimization to continue processing on failures.
2026-01-18 08:15:21 +00:00
Tyler Yust
7bfc77db25
fix: improve file URL handling and enhance image loading logic
...
- Added handling for file URLs using fileURLToPath for proper resolution.
- Updated logic to skip relative path resolution if ref.resolved is already absolute.
- Enhanced cap calculation for image loading to handle undefined maxBytes more gracefully.
2026-01-18 08:15:21 +00:00
Peter Steinberger
d3b15c6afa
ci: stabilize vitest runs
2026-01-18 06:58:54 +00:00
Peter Steinberger
f86b24c511
refactor(session): centralize thread reset detection
...
Co-authored-by: Austin Mudd <austinm911@gmail.com >
2026-01-18 06:55:04 +00:00
Peter Steinberger
367826f6e4
feat(session): add daily reset policy
...
Co-authored-by: Austin Mudd <austinm911@gmail.com >
2026-01-18 06:37:37 +00:00