Peter Steinberger
6aac3184c3
test: normalize windows path assertions
2026-01-09 18:32:45 +01:00
Peter Steinberger
36bdec0f2c
refactor(messages): centralize per-agent prefixes
2026-01-09 16:54:54 +01:00
Peter Steinberger
66bbb723c5
fix: derive prefixes from routed identity ( #578 ) (thanks @p6l-richard)
2026-01-09 16:39:32 +01:00
Richard Poelderl
43848b7b43
feat(messages): also derive responsePrefix from identity.name
...
When identity.name is configured and responsePrefix is not explicitly set,
automatically default responsePrefix to [identity.name].
This means users only need to set their identity once:
{ identity: { name: "MyBot" } }
And outbound messages will automatically be prefixed with [MyBot].
2026-01-09 16:31:20 +01:00
Richard Poelderl
8112b276c0
feat(messages): derive messagePrefix from identity.name
...
When identity.name is configured, use it for the default messagePrefix
instead of hardcoded '[clawdbot]'. Falls back to 'clawdbot' if not set.
This allows users to customize how their bot identifies itself in messages
by setting identity.name in their config or IDENTITY.md.
2026-01-09 16:31:01 +01:00
Peter Steinberger
7b81d97ec2
feat: wire multi-agent config and routing
...
Co-authored-by: Mark Pors <1078320+pors@users.noreply.github.com>
2026-01-09 12:48:42 +00:00
Peter Steinberger
22d517a520
fix: clarify WhatsApp owner number prompts
2026-01-09 13:32:52 +01:00
Peter Steinberger
60b282cf1d
fix: improve web media fetch errors
2026-01-09 07:09:15 +00:00
Peter Steinberger
97635a8966
test: assert WhatsApp queued routing context ( #534 ) thanks @mcinteerj
2026-01-09 02:04:05 +01:00
Peter Steinberger
f2246df875
fix: route WhatsApp queued replies to sender ( #534 )
2026-01-09 02:03:30 +01:00
Jake
a52e75d978
WhatsApp: fix routing for queued messages by using correct OriginatingTo
2026-01-09 02:01:33 +01:00
Peter Steinberger
e5dbba7b67
fix: sort imports for lint
2026-01-09 00:57:17 +01:00
Peter Steinberger
01b8f4582f
fix: align discord monitor + whatsapp activity
2026-01-09 00:33:09 +01:00
Peter Steinberger
7ece3717e6
refactor(pairing): centralize reply formatting
2026-01-08 23:29:23 +00:00
Peter Steinberger
e0439df4ce
feat(pairing): show sender ids across providers
2026-01-08 23:19:13 +00:00
Peter Steinberger
69f8af530d
feat(providers): improve doctor + status probes
2026-01-08 23:48:37 +01:00
Peter Steinberger
ed80860c34
chore(format): apply biome fixes
2026-01-08 22:22:17 +00:00
Peter Steinberger
014667e00b
fix: tighten group elevated targeting
2026-01-08 22:57:18 +01:00
Peter Steinberger
35ba99c245
fix: honor non-interactive legacy migrations
2026-01-08 22:13:57 +01:00
Peter Steinberger
699ba410fe
fix: resolve WhatsApp LID inbound mapping
2026-01-08 22:08:54 +01:00
Peter Steinberger
959a19d8ae
fix: clean lint issues
2026-01-08 11:07:11 +00:00
Peter Steinberger
e7b3cc3d3d
fix: add provider account metadata
2026-01-08 11:05:28 +00:00
Peter Steinberger
a483e58860
feat: add quickstart onboarding defaults
2026-01-08 11:54:40 +01:00
Peter Steinberger
e83c6ac088
feat(cli): move provider login/logout
2026-01-08 07:40:08 +01:00
Peter Steinberger
6a81652ebf
fix(typing): keep tool-start ttl mode-safe ( #452 , thanks @thesash)
2026-01-08 06:18:35 +00:00
Peter Steinberger
15379dedf0
fix(telegram): voice-note tag defaults ( #188 , thanks @manmal)
2026-01-08 03:15:08 +00:00
Peter Steinberger
fbeb9e6775
fix(ci): stabilize windows tests
2026-01-08 02:44:19 +00:00
Peter Steinberger
05b8679c8b
feat: add providers CLI and multi-account onboarding
2026-01-08 01:55:59 +01:00
Peter Steinberger
1bc4e1ae88
fix: satisfy lint for slow listener logs
2026-01-08 01:32:52 +01:00
Peter Steinberger
3398fc3820
fix: format slow listener logs
2026-01-08 01:28:21 +01:00
Peter Steinberger
11006d1245
refactor: share backoff helpers
2026-01-07 23:22:12 +00:00
Peter Steinberger
ef644b8369
fix: suppress whatsapp pairing in self-phone mode
2026-01-07 20:49:58 +01:00
Peter Steinberger
3668388912
fix(routing): harden originating reply routing
2026-01-07 05:02:34 +00:00
Peter Steinberger
42ae2341aa
fix: harden pairing flow
2026-01-07 05:06:04 +01:00
Peter Steinberger
073b16a3a0
fix: clean up reaction tooling
2026-01-07 04:16:39 +01:00
Peter Steinberger
3afef2d504
feat: unify provider reaction tools
2026-01-07 04:16:39 +01:00
Sash Zats
551a8d5683
Add WhatsApp reactions support
...
Summary:
Test Plan:
2026-01-07 04:16:39 +01:00
Peter Steinberger
7aa7fa79d0
feat: update heartbeat defaults
2026-01-06 21:54:42 +00:00
Peter Steinberger
84c8209158
fix(slack): clear assistant thread status after replies
2026-01-06 21:41:30 +01:00
Peter Steinberger
67bda21811
fix: preserve markdown fences when chunking
2026-01-06 20:23:41 +01:00
Peter Steinberger
9fb37cbf93
style: format whatsapp inbound allowlist
2026-01-06 18:33:37 +00:00
Peter Steinberger
dbfa316d19
feat: multi-agent routing + multi-account providers
2026-01-06 18:33:37 +00:00
Peter Steinberger
967cef80bc
fix(security): lock down inbound DMs by default
2026-01-06 17:51:56 +01:00
Peter Steinberger
dbb51006cd
feat: unify group policy allowlists
2026-01-06 06:40:42 +00:00
Shadow
91cb2c02a7
fix: allow optional reply body
2026-01-05 23:47:33 -06:00
Peter Steinberger
b759cb6f37
feat(providers): normalize location parsing
2026-01-06 06:31:09 +01:00
Peter Steinberger
35a2140e48
fix: clean up poll merge
2026-01-06 04:51:05 +00:00
Peter Steinberger
0b27964693
feat: unify poll support
...
Co-authored-by: DBH <5251425+dbhurley@users.noreply.github.com>
2026-01-06 04:51:05 +00:00
DBH
2737e17c67
feat: Add WhatsApp poll support ( #248 )
...
Implements issue #123 - WhatsApp Poll Support
## Gateway Protocol
- Add `poll` RPC method with params: to, question, options (2-12), selectableCount
## ActiveWebListener
- Add `sendPoll(to, poll)` method to interface
- Implementation uses Baileys poll message type
## CLI Command
- `clawdbot poll --to <jid> -q <question> -o <opt1> -o <opt2> [-s count]`
- Supports --dry-run, --json, --verbose flags
- Validates 2-12 options
## Changes
- src/gateway/protocol/schema.ts: Add PollParamsSchema
- src/gateway/protocol/index.ts: Export validator and types
- src/web/active-listener.ts: Add sendPoll to interface
- src/web/inbound.ts: Implement sendPoll using Baileys
- src/web/outbound.ts: Add sendPollWhatsApp function
- src/gateway/server-methods/send.ts: Add poll handler
- src/commands/poll.ts: New CLI command
- src/cli/program.ts: Register poll command
Closes #123
2026-01-06 04:44:15 +00:00
Marcus Neves
9ab0b88ac6
feat(whatsapp,telegram): add groupPolicy config option ( #216 )
...
Co-authored-by: Marcus Neves <conhecendo.contato@gmail.com>
Co-authored-by: Shadow <hi@shadowing.dev>
2026-01-05 22:41:19 -06:00
Peter Steinberger
13eb9c9ee9
refactor: centralize reply dispatch
2026-01-06 04:55:00 +01:00
Peter Steinberger
5946f4c341
test: extend typing idle coverage
2026-01-06 03:42:33 +00:00
Peter Steinberger
ca8f66f844
refactor: unify group allowlist policy
2026-01-06 04:27:51 +01:00
Peter Steinberger
9d656f4269
style: satisfy lint
2026-01-06 03:11:42 +00:00
Peter Steinberger
d5f088978a
fix: stop typing after dispatcher idle
2026-01-06 03:09:49 +00:00
Peter Steinberger
cc0ef4d012
fix(telegram): improve gif handling
2026-01-06 02:22:19 +00:00
Peter Steinberger
811ec8b78b
fix: unify mention gating across providers
2026-01-06 01:32:17 +01:00
Peter Steinberger
291c6f3b60
test: cover WhatsApp DM senderE164
2026-01-06 00:55:41 +01:00
Xin
a6a45f4b84
fix(whatsapp): populate senderE164 for direct chats to enable owner commands ( #247 )
2026-01-05 23:54:35 +00:00
Peter Steinberger
ac3dedaa1b
feat: standardize timestamps to UTC
2026-01-05 23:03:59 +00:00
Peter Steinberger
f790f3f3ba
fix/heartbeat ok delivery filter ( #246 )
...
* cron: skip delivery for HEARTBEAT_OK responses
When an isolated cron job has deliver:true, skip message delivery if the
response is just HEARTBEAT_OK (or contains HEARTBEAT_OK at edges with
short remaining content <= 30 chars). This allows cron jobs to silently
ack when nothing to report but still deliver actual content when there
is something meaningful to say.
Media is still delivered even if text is HEARTBEAT_OK, since the
presence of media indicates there's something to share.
* fix(heartbeat): make ack padding configurable
* chore(deps): update to latest
---------
Co-authored-by: Josh Lehman <josh@martian.engineering>
2026-01-05 22:52:13 +00:00
Peter Steinberger
c75b2a7067
refactor: unify reply dispatch across providers
2026-01-05 19:43:54 +01:00
Peter Steinberger
f24fe4e9cd
fix(whatsapp): reconnect on crypto unhandled rejection
2026-01-05 13:55:37 +00:00
Peter Steinberger
995f5959af
fix: stage sandbox media for inbound attachments
2026-01-05 06:18:11 +01:00
Peter Steinberger
2eb78b8da7
fix: resolve qrcode ESM import for Node 25
2026-01-05 03:47:57 +01:00
Peter Steinberger
93bb0257f0
fix: include sessions in npm pack and update qrcode import
2026-01-05 03:28:25 +01:00
Peter Steinberger
d92a9e351e
style: fix linting order and formatting
2026-01-05 02:33:59 +01:00
Peter Steinberger
e4335ea094
fix: bundle qr renderer in relay
2026-01-05 02:19:49 +01:00
Peter Steinberger
1bad96aa2b
style: tidy auto-reply imports and formatting
2026-01-05 01:46:16 +01:00
Jake
65a55b97e0
WhatsApp: mark offline/history messages as read
2026-01-05 01:36:29 +01:00
Peter Steinberger
852f947b44
fix: unify control command handling
2026-01-05 01:31:36 +01:00
Peter Steinberger
c6de1b1f7d
feat: add --dev/--profile CLI profiles
2026-01-05 01:27:13 +01:00
Peter Steinberger
c6b8235862
style: format tests and helpers
2026-01-04 14:57:57 +00:00
Peter Steinberger
246adaa119
chore: rename project to clawdbot
2026-01-04 14:38:51 +00:00
Peter Steinberger
c9504a6f20
refactor: split config module
2026-01-04 07:05:17 +01:00
Shadow
3a28e3562c
Discord: tools for uploading emojis and stickers!
2026-01-03 21:20:01 -06:00
Peter Steinberger
8724c2aea8
fix: satisfy gate checks
2026-01-04 01:16:53 +01:00
Peter Steinberger
e17c038d18
fix: add gif playback for WhatsApp sends
2026-01-03 23:56:40 +00:00
Shadow
ce92fac983
chore: formatting
2026-01-03 12:35:16 -06:00
Peter Steinberger
591773715e
fix: honor whatsapp per-group mention overrides
2026-01-03 17:51:10 +01:00
Peter Steinberger
1a00175eb7
chore: fix lint formatting
2026-01-03 14:57:49 +00:00
Peter Steinberger
bb54e60179
fix(logging): decouple file logs from console verbose
2026-01-03 12:32:14 +00:00
Peter Steinberger
1ec3512925
refactor!: drop clawdis_ tool prefix
2026-01-03 12:39:52 +01:00
Peter Steinberger
772ada4308
fix: refine tool summaries and scope discord tool
2026-01-03 12:33:42 +01:00
Peter Steinberger
988b67aa30
test: refresh auto-reply expectations
2026-01-03 05:09:59 +01:00
Peter Steinberger
5684e2d658
feat: configurable outbound text chunk limits
2026-01-03 01:49:27 +01:00
Peter Steinberger
9616f4b2b1
feat: stream reply blocks immediately
2026-01-03 00:28:33 +01:00
Peter Steinberger
2c92ccd66e
feat: add reply tags and replyToMode
2026-01-02 23:18:41 +01:00
Peter Steinberger
5cf1a9535e
feat: move group mention gating to provider groups
2026-01-02 22:24:26 +01:00
Peter Steinberger
0766c5e3cb
refactor: move whatsapp allowFrom config
2026-01-02 13:00:29 +01:00
Peter Steinberger
b50df6eb1d
style: format linted files
2026-01-02 12:20:38 +01:00
Peter Steinberger
9adbf47773
refactor: normalize group session keys
2026-01-02 10:14:58 +01:00
Peter Steinberger
76e24653e9
fix(media): preserve GIF animation, skip JPEG optimization
...
- Skip JPEG optimization for image/gif content type (both local and URL)
- Preserves animation in uploaded GIFs to Discord/other providers
- Added tests for GIF preservation from local files and URLs
- Updated changelog
2026-01-02 00:56:04 +00:00
Peter Steinberger
4c2812b429
fix: refine HEARTBEAT_OK handling
2026-01-02 01:42:27 +01:00
Peter Steinberger
06e379a239
fix: suppress stray HEARTBEAT_OK replies
2026-01-01 23:53:29 +01:00
Peter Steinberger
b3f2416a09
test: reduce flaky timeouts
2025-12-30 05:27:18 +01:00
Peter Steinberger
10e1e7fd44
chore: apply biome formatting
2025-12-30 00:16:07 +00:00
Peter Steinberger
eb158545fc
fix: force web reconnect on stalled close
2025-12-28 12:04:20 +00:00
Peter Steinberger
e336b7f27e
fix: use final heartbeat payload
2025-12-26 20:39:20 +00:00
Peter Steinberger
8dda07a1e9
feat(queue): add queue modes and discord gating
2025-12-26 13:35:44 +01:00