Peter Steinberger
cb78fa46a1
fix: make node-llama-cpp optional
2026-01-15 18:37:02 +00:00
Shadow
316e8b2eb2
Discord: fix allowlist gating. Closes #961
2026-01-15 11:53:13 -06:00
Peter Steinberger
b6fb24f6d2
Merge pull request #964 from bohdanpodvirnyi/feat/telegram-reactions
...
feat(telegram): add bidirectional emoji reactions support
2026-01-15 17:21:51 +00:00
Peter Steinberger
2b1c26f900
fix: refine telegram reactions ( #964 ) (thanks @bohdanpodvirnyi)
2026-01-15 17:20:17 +00:00
Peter Steinberger
47ea9356d1
Merge pull request #959 from rdev/rdev/finally-fix-antigravity-claude
...
Fix antigravity claude
2026-01-15 17:10:04 +00:00
Bohdan Podvirnyi
f12c1b391f
fix: lint errors
2026-01-15 17:08:31 +00:00
Peter Steinberger
05658b6609
fix: tighten command arg value types
2026-01-15 17:08:09 +00:00
Bohdan Podvirnyi
dfb6630de1
fix: remove dup definitions + add reaction config
2026-01-15 17:07:38 +00:00
Bohdan Podvirnyi
eb7656d68c
fix: lint errors
2026-01-15 17:07:38 +00:00
Bohdan Podvirnyi
0e1dcf9cb4
feat: added capability for clawdbot to react
2026-01-15 17:07:38 +00:00
Bohdan Podvirnyi
d05c3d0659
feat: make telegram reactions visible to clawdbot
2026-01-15 17:07:38 +00:00
Peter Steinberger
36292d3fbb
fix: preserve Antigravity Claude signatures ( #959 ) (thanks @rdev)
2026-01-15 17:06:39 +00:00
Max
1ae344d8a6
Fix antigravity claude
2026-01-15 17:06:39 +00:00
Peter Steinberger
01c43b0b0c
fix: avoid base string coercion in auto-reply formatting
2026-01-15 17:03:34 +00:00
Peter Steinberger
fc4aa9a683
Merge pull request #954 from roshanasingh4/fix/946-openai-completions-trim
...
Fix model fallback crash on undefined provider/model (#946 )
2026-01-15 16:59:19 +00:00
Peter Steinberger
c043e9767f
fix: default model fallback when provider/model missing ( #954 ) (thanks @roshanasingh4)
2026-01-15 16:58:41 +00:00
Peter Steinberger
8b48299d8f
Merge pull request #953 from roshanasingh4/fix/cli-quick-reference-system-prompt
...
Fix system prompt: prevent invented CLI commands
2026-01-15 16:55:52 +00:00
Roshan Singh
0f27cff247
Fix model fallback crash on undefined provider/model ( #946 )
2026-01-15 16:50:46 +00:00
Roshan Singh
d0455f2683
fix(system-prompt): add CLI quick reference to prevent invented commands
2026-01-15 11:43:22 +00:00
Peter Steinberger
0a5b1fbcd1
fix(browser): handle extension relay page selection
2026-01-15 11:16:53 +00:00
Peter Steinberger
3a446dd400
style: oxfmt
2026-01-15 10:48:04 +00:00
Peter Steinberger
c7615aa559
fix(browser): improve chrome relay tab selection
2026-01-15 10:44:11 +00:00
Peter Steinberger
6042485367
fix(browser): default chrome profile to host
2026-01-15 10:43:39 +00:00
Peter Steinberger
9abd7ceda2
test: cover dynamic command arg menus
2026-01-15 10:25:35 +00:00
Peter Steinberger
cf81cb942b
fix: guard Slack cmdarg decode
2026-01-15 10:25:35 +00:00
Peter Steinberger
9097ef90b7
docs(browser): clarify chrome extension profile usage
2026-01-15 10:22:29 +00:00
Peter Steinberger
4f1a4ab072
feat(browser): add snapshot refs=aria mode
2026-01-15 10:22:29 +00:00
Peter Steinberger
0facc63019
fix(skills): improve summarize selection
2026-01-15 10:14:59 +00:00
Peter Steinberger
d5d33d4848
fix(browser): persist role refs per targetId
2026-01-15 09:56:24 +00:00
Peter Steinberger
84e9401d53
fix(ci): repair format + android tests
2026-01-15 09:50:18 +00:00
Peter Steinberger
84bee3d7d0
Merge pull request #936 from clawdbot/shadow/dynamic-command-args
...
Commands: add dynamic arg menus
2026-01-15 09:44:08 +00:00
Peter Steinberger
6ff3c39989
test: add command arg parsing coverage ( #936 ) (thanks @thewilloftheshadow)
2026-01-15 09:38:21 +00:00
Peter Steinberger
f9170c5d02
fix(browser): keep tab stable across snapshot and act
2026-01-15 09:36:48 +00:00
Peter Steinberger
52f876bfbc
fix: native command arg menus follow-ups ( #936 ) (thanks @thewilloftheshadow)
2026-01-15 09:33:31 +00:00
Shadow
74bc5bfd7c
Commands: add dynamic arg menus
2026-01-15 09:31:16 +00:00
Peter Steinberger
7e1e7ba2d8
fix(agents): skip thinking tags in code spans
2026-01-15 09:23:56 +00:00
Peter Steinberger
c86b257d38
docs(tools): hint chrome extension in browser tool prompt
2026-01-15 09:13:36 +00:00
Peter Steinberger
4291d56e0b
chore: format + fix telegram thread ids
2026-01-15 09:13:19 +00:00
Peter Steinberger
5599603bdb
feat: offer local plugin install in git checkouts
2026-01-15 09:07:48 +00:00
Peter Steinberger
510915a801
fix(onboarding): wait for gateway before health
2026-01-15 09:07:30 +00:00
Peter Steinberger
4275ed68a2
fix(browser): default to chrome extension takeover
2026-01-15 09:02:42 +00:00
Peter Steinberger
75d2785d20
fix(browser): make extension relay zero-config
2026-01-15 09:02:42 +00:00
Peter Steinberger
725a6b71dc
feat: add matrix channel plugin
2026-01-15 08:40:37 +00:00
Peter Steinberger
a39bb4310c
fix(onboarding): daemon progress + web search setup
2026-01-15 08:31:02 +00:00
Peter Steinberger
f1ac18933c
fix(cli): daemon output + health colors
2026-01-15 08:31:02 +00:00
Peter Steinberger
1797233989
fix(tui): surface model errors
2026-01-15 08:31:02 +00:00
Peter Steinberger
c269d5f258
fix: isolate Slack thread sessions ( #758 )
2026-01-15 08:11:03 +00:00
Peter Steinberger
53d0bf653a
fix: canonicalize main session keys
2026-01-15 08:05:41 +00:00
Peter Steinberger
a5a9788b20
fix: imessage dm replies and error details ( #935 )
2026-01-15 08:05:10 +00:00
Peter Steinberger
f3519d895c
fix: normalize slack channel types for sessions
2026-01-15 08:00:20 +00:00
Peter Steinberger
0ac5480034
fix(onboarding): move web search hint to end
2026-01-15 07:57:18 +00:00
Peter Steinberger
8dacafce7f
fix: harden whatsapp command auth
2026-01-15 07:54:39 +00:00
Peter Steinberger
79f340a410
chore: prep 2026.1.14 npm release
2026-01-15 07:47:18 +00:00
Peter Steinberger
081e5ef572
fix(tools): enable web_fetch by default
2026-01-15 07:42:07 +00:00
Peter Steinberger
0a1eeedc10
fix: unblock control commands during active runs
2026-01-15 07:08:48 +00:00
Peter Steinberger
1c96477686
fix: harden session cache + heartbeat restore
...
Co-authored-by: Ronak Guliani <ronak-guliani@users.noreply.github.com>
2026-01-15 07:07:12 +00:00
Peter Steinberger
154b8e3e0e
fix: bridge respawned child signals ( #933 ) (thanks @roshanasingh4)
...
Co-authored-by: Roshan Singh <roshanasingh4@users.noreply.github.com>
2026-01-15 06:37:27 +00:00
Roshan Singh
d9f2ee40f7
Fix entry respawn signal forwarding
...
Fixes #931
2026-01-15 06:33:28 +00:00
Peter Steinberger
728cd5e974
fix: document WhatsApp read receipts toggle ( #882 ) (thanks @chrisrodz)
2026-01-15 06:22:33 +00:00
Christian A. Rodriguez
d763926364
style: fix biome formatting
2026-01-15 06:22:09 +00:00
Christian A. Rodriguez
7a683a4b62
feat(whatsapp): add sendReadReceipts config option
...
Add option to disable automatic read receipts for WhatsApp messages.
When set to false, Clawdbot will not mark messages as read (blue ticks).
Closes #344
Changes:
- Add sendReadReceipts to WhatsAppConfig and WhatsAppAccountConfig types
- Add sendReadReceipts to zod schemas for validation
- Add sendReadReceipts to ResolvedWhatsAppAccount with fallback chain
- Pass sendReadReceipts through to monitorWebInbox
- Gate sock.readMessages() call based on config option
Default behavior (true) is preserved - only explicitly setting false
will disable read receipts.
2026-01-15 06:22:09 +00:00
Peter Steinberger
44a237b637
feat(browser): copy extension path to clipboard
2026-01-15 06:19:47 +00:00
Peter Steinberger
375304bf13
test: remove legacy config migration test
2026-01-15 06:18:44 +00:00
Peter Steinberger
d59aab7fd3
chore: drop Clawdis legacy references
2026-01-15 06:18:44 +00:00
Peter Steinberger
624cb33534
feat: expand Telegram allowFrom guidance
...
Co-authored-by: Christoph Nakazawa <cpojer@users.noreply.github.com>
2026-01-15 06:15:06 +00:00
Peter Steinberger
0cbfea79fa
docs(cli): add per-command CLI pages
2026-01-15 06:13:10 +00:00
Cash Williams
51e871f9e5
Make timezone and 24 hour clock explicit in system prompt
2026-01-15 06:08:43 +00:00
Peter Steinberger
47634c294d
style: format pi embedded utils
2026-01-15 06:08:17 +00:00
Peter Steinberger
9c1122def0
test: fix Windows security audit perms
2026-01-15 06:04:39 +00:00
Peter Steinberger
2bd9e84851
fix(agents): strip tool leak text ( #905 )
...
Thanks @erikpr1994.
Co-authored-by: Erik Pastor Rios <erikpastorrios1994@gmail.com>
2026-01-15 05:58:02 +00:00
Erik
5c2eedc340
test: add thought tag stripping test case
2026-01-15 05:58:02 +00:00
Erik
3b7d103758
fix(agent): strip thinking tags from text content
2026-01-15 05:58:02 +00:00
Erik
8146c43aa3
fix(agents): strip leaked tool call text from assistant messages
...
When replaying conversation history to Gemini, tool calls without
thought_signature are downgraded to text blocks like [Tool Call: ...].
This leaked internal technical info into user-facing chat messages.
Added stripDowngradedToolCallText filter alongside existing Minimax
filter to remove these text representations before extraction.
2026-01-15 05:58:02 +00:00
Peter Steinberger
0c18b2c442
feat(status): add security audit section
2026-01-15 05:52:01 +00:00
Peter Steinberger
54fb59b8f3
feat: extend Telegram dock commands and config hashing ( #929 )
...
Thanks @grp06.
Co-authored-by: George Pickett <gpickett00@gmail.com>
2026-01-15 05:49:28 +00:00
Peter Steinberger
2e70c3ceab
fix: return setup hint when web_search lacks key
2026-01-15 05:35:22 +00:00
Peter Steinberger
ca1902fb4e
feat(security): expand audit and safe --fix
2026-01-15 05:31:43 +00:00
Peter Steinberger
f11a89031b
chore: format reply dispatcher
2026-01-15 05:31:03 +00:00
Peter Steinberger
3c22fab679
docs(cli): add dedicated browser command page
2026-01-15 05:30:03 +00:00
Peter Steinberger
ad46e95df9
test: relax browser act contract timeout on Windows
2026-01-15 05:29:37 +00:00
Peter Steinberger
7d4f2d9aed
Merge pull request #928 from sebslight/feature/response-prefix-template-variables
...
feat: add dynamic template variables to messages.responsePrefix
2026-01-15 05:27:20 +00:00
Peter Steinberger
738b3592cd
fix: remove conflict marker in google helper ( #875 )
2026-01-15 05:25:45 +00:00
Peter Steinberger
cd2af64860
fix: cap tool call IDs for OpenAI/OpenRouter ( #875 ) (thanks @j1philli)
2026-01-15 05:25:45 +00:00
Josh Phillips
04f1e767b2
Fix OpenAI tool_call id length for OpenRouter
2026-01-15 05:25:45 +00:00
Peter Steinberger
1c7ac2a6ab
test: fix windows-only expectations
2026-01-15 05:25:08 +00:00
Peter Steinberger
77cf40da87
feat: profile-aware gateway service names ( #671 )
...
Thanks @bjesuiter.
Co-authored-by: Benjamin Jesuiter <bjesuiter@gmail.com>
2026-01-15 05:23:41 +00:00
Peter Steinberger
139f80a291
chore: format sources and update protocol outputs
2026-01-15 05:17:19 +00:00
Peter Steinberger
757243993c
fix: stabilize gateway config tests + tool schema
2026-01-15 05:16:28 +00:00
Peter Steinberger
57c66fe813
fix: clean up onboarding + channel selection types
2026-01-15 05:12:33 +00:00
Peter Steinberger
042b65dfcc
feat: add web tools config to configure
2026-01-15 05:08:56 +00:00
Peter Steinberger
f6a72ef3c2
feat: improve browser extension install output
2026-01-15 05:05:27 +00:00
Peter Steinberger
568cc368ae
feat: add onboarding plugin install flow
2026-01-15 05:04:09 +00:00
Peter Steinberger
5abe3c2145
feat: add plugin HTTP hooks + Zalo plugin
2026-01-15 05:04:09 +00:00
Peter Steinberger
ef78b198cb
feat: add Chrome extension browser relay
2026-01-15 04:52:28 +00:00
Peter Steinberger
5fdaef3646
fix: downgrade unsigned gemini thinking
2026-01-15 04:51:21 +00:00
Peter Steinberger
fa4670c5fe
feat: improve agent auth guidance
2026-01-15 04:51:21 +00:00
Peter Steinberger
edd8c613d6
feat(security): add audit --fix
2026-01-15 04:50:06 +00:00
Peter Steinberger
0a7f5bf6a5
test(gateway): fix config.patch baseHash fixtures
2026-01-15 04:50:06 +00:00
Peter Steinberger
eb3e865f15
fix(build): restore tool policy typing
2026-01-15 04:50:06 +00:00
Roshan Singh
1baa55c145
Structured subagent announce output + include run outcome ( #835 )
...
* docs: clarify subagent announce status
* Make subagent announce structured and include run outcome
* fix: stabilize sub-agent announce status (#835 ) (thanks @roshanasingh4)
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-01-15 04:48:07 +00:00
Sebastian
6ef3837e73
Remove debug logging for responsePrefix template resolution
2026-01-14 23:36:47 -05:00
Sebastian
e7167e35ed
debug: use console.log instead of logVerbose for always-visible logging
2026-01-14 23:29:17 -05:00
Peter Steinberger
2e0325e3bf
feat: add web search hint to onboarding
2026-01-15 04:25:19 +00:00
Sebastian
56b3b44342
debug: add responsePrefix template logging
2026-01-14 23:23:21 -05:00
Sebastian
113eea5047
fix: mutate prefixContext object instead of reassigning for closure correctness
2026-01-14 23:20:19 -05:00
Sebastian
7b04e6ac42
debug: add prefix template resolution logging
2026-01-14 23:15:46 -05:00
Peter Steinberger
f275cc180b
feat: add web tools
2026-01-15 04:07:40 +00:00
Peter Steinberger
31d3aef8d6
fix: prevent config clobbering
2026-01-15 04:06:11 +00:00
Sebastian
d0a4cce41e
feat: add dynamic template variables to messages.responsePrefix ( #923 )
...
Adds support for template variables in `messages.responsePrefix` that
resolve dynamically at runtime with the actual model used (including
after fallback).
Supported variables (case-insensitive):
- {model} - short model name (e.g., "claude-opus-4-5", "gpt-4o")
- {modelFull} - full model identifier (e.g., "anthropic/claude-opus-4-5")
- {provider} - provider name (e.g., "anthropic", "openai")
- {thinkingLevel} or {think} - thinking level ("high", "low", "off")
- {identity.name} or {identityName} - agent identity name
Example: "[{model} | think:{thinkingLevel}]" → "[claude-opus-4-5 | think:high]"
Variables show the actual model used after fallback, not the intended
model. Unresolved variables remain as literal text.
Implementation:
- New module: src/auto-reply/reply/response-prefix-template.ts
- Template interpolation in normalize-reply.ts via context provider
- onModelSelected callback in agent-runner-execution.ts
- Updated all 6 provider message handlers (web, signal, discord,
telegram, slack, imessage)
- 27 unit tests covering all variables and edge cases
- Documentation in docs/gateway/configuration.md and JSDoc
Fixes #923
2026-01-14 23:05:08 -05:00
Peter Steinberger
429f973280
test: cover browser snapshot labels and efficient mode
2026-01-15 04:04:30 +00:00
Peter Steinberger
6320f739d4
refactor: centralize whatsapp auth detection
2026-01-15 04:01:06 +00:00
Peter Steinberger
1732932c57
fix: unblock launchctl stub on windows
2026-01-15 03:58:32 +00:00
Peter Steinberger
1c737f88fe
test: cover provider tool policies
2026-01-15 03:55:20 +00:00
Peter Steinberger
fa8d9b9189
feat: add provider-specific tool policies
2026-01-15 03:55:20 +00:00
Peter Steinberger
1078d178d7
fix: doctor ack reaction migration ( #927 )
...
Thanks @grp06.
Co-authored-by: George Pickett <gpickett00@gmail.com>
2026-01-15 03:51:55 +00:00
Peter Steinberger
a6e780b2f6
feat: add browser snapshot modes
2026-01-15 03:50:57 +00:00
Peter Steinberger
dfea2991c9
fix(daemon): clear launchd disabled state before bootstrap ( #849 ) (thanks @ndraiman)
2026-01-15 03:35:24 +00:00
Netanel Draiman
d51a9ebb0e
fix(daemon): enable launchd service before bootstrap
...
When a launchd service is uninstalled via bootout, macOS marks it as
disabled in /var/db/com.apple.xpc.launchd/disabled.*.plist. This persists
across reboots and plist recreation. Future bootstrap calls fail with
error 5 (I/O error) because the service is still marked disabled.
Fix: Call 'launchctl enable' before 'launchctl bootstrap' to clear the
disabled state, matching the fix already applied to the macOS Swift app
in GatewayLaunchAgentManager.swift.
Related: #306
2026-01-15 03:31:52 +00:00
Peter Steinberger
5c52dbf661
style: oxfmt fixes ( #925 ) (thanks @grp06)
2026-01-15 03:22:54 +00:00
George Pickett
8f797f213e
Logging: tolerate EIO console writes
2026-01-15 03:20:48 +00:00
Peter Steinberger
aa74e28112
fix(telegram): aggregate split inbound messages
2026-01-15 03:04:59 +00:00
Peter Steinberger
e569f15631
fix: scrub tuple items schemas for Gemini tools ( #926 ) — thanks @grp06
...
Co-authored-by: George Pickett <gpickett00@gmail.com>
2026-01-15 02:59:35 +00:00
Peter Steinberger
eaace34233
fix: restore docker binds and PATH in sandbox exec ( #873 )
...
Thanks @akonyer.
Co-authored-by: Aaron Konyer <aaronk@gomodular.ca>
2026-01-15 02:58:20 +00:00
Peter Steinberger
1b24b6a02b
fix: add plugin runtime registry
2026-01-15 02:44:45 +00:00
Peter Steinberger
2b4a68e276
feat: load channel plugins
2026-01-15 02:42:44 +00:00
Peter Steinberger
2fb2035dbf
fix: normalize Claude CLI auth mode to oauth ( #855 )
...
Thanks @sebslight.
Co-authored-by: Sebastian <sebslight@gmail.com>
2026-01-15 02:29:43 +00:00
Peter Steinberger
765196d5c3
style(slack): satisfy oxfmt ( #850 )
2026-01-15 02:23:22 +00:00
Jonathan Wilkins
09ce6ff99e
fix(slack): respect top-level requireMention config
...
The `channels.slack.requireMention` setting was defined in the schema
but never passed to `resolveSlackChannelConfig()`, which always
defaulted to `true`. This meant setting `requireMention: false` at the
top level had no effect—channels still required mentions.
Pass `slackCfg.requireMention` as `defaultRequireMention` to the
resolver and use it as the fallback instead of hardcoded `true`.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-15 02:17:27 +00:00
Peter Steinberger
6ffd7111a6
fix: add TUI status spinner
2026-01-15 02:11:12 +00:00
Peter Steinberger
7904a14af1
fix: render TUI pickers as overlays
2026-01-15 01:59:05 +00:00
Peter Steinberger
1b79730db8
style: apply oxfmt fixes
2026-01-15 01:53:14 +00:00
Peter Steinberger
ad8799522c
feat(config): gate channel config writes
2026-01-15 01:41:15 +00:00
Peter Steinberger
f65668cb5f
fix: suppress raw API error payloads ( #924 ) (thanks @grp06)
...
Co-authored-by: George Pickett <gpickett00@gmail.com>
2026-01-15 01:34:19 +00:00
George Pickett
393d21d86c
Format: fix report + telegram formatting
2026-01-15 01:27:16 +00:00
George Pickett
232c512502
Format: apply oxfmt fixes
2026-01-15 01:27:16 +00:00
George Pickett
8c1e6a82b2
Tests: add Gemini thoughtSignature for tool-call ids
2026-01-15 01:27:16 +00:00
George Pickett
2d54efe851
Embedded runner: suppress raw API error payloads ( #919 )
2026-01-15 01:27:16 +00:00
Peter Steinberger
c2a4f256c8
feat: add security audit + onboarding checkpoint
2026-01-15 01:25:11 +00:00
Peter Steinberger
326d4049da
fix(telegram): migrate group config on supergroup IDs ( #906 )
...
Thanks @sleontenko.
Co-authored-by: Stan <sleontenko@users.noreply.github.com>
2026-01-15 01:10:30 +00:00
sleontenko
9b7c4b3884
feat(telegram): auto-migrate group config on supergroup migration
...
When a Telegram group is upgraded to a supergroup, the chat ID changes
(e.g., -123456 → -100123456). This causes the bot to lose its group
configuration since it's keyed by chat ID.
This change:
- Adds handler for `message:migrate_to_chat_id` event
- Logs the migration (old_id → new_id) for visibility
- If the old chat ID has config in channels.telegram.groups, automatically:
- Copies the config to the new chat ID
- Removes the old chat ID entry
- Saves the updated config file
This eliminates the need to manually update clawdbot.json when groups
migrate to supergroups.
2026-01-15 01:10:30 +00:00
Peter Steinberger
bcde09ae91
feat: add /context prompt breakdown
2026-01-15 01:06:35 +00:00
Peter Steinberger
e5c8abab9e
fix: preserve markdown code fences
2026-01-15 00:31:07 +00:00
Peter Steinberger
9f1a8be2bf
refactor: unify markdown formatting pipeline
2026-01-15 00:31:07 +00:00
Peter Steinberger
bd7d362d3b
refactor: unify markdown formatting pipeline
2026-01-15 00:31:07 +00:00
Peter Steinberger
0d0b77ded6
fix(telegram): wire delete action for message tool ( #903 ) - thanks @sleontenko
...
Co-authored-by: Stan <sleontenko@users.noreply.github.com>
2026-01-15 00:29:53 +00:00
sleontenko
83a25d26fc
feat(telegram): add deleteMessage action
...
Add ability to delete messages in Telegram chats via the message tool.
Changes:
- Add deleteMessageTelegram function in send.ts
- Add deleteMessage action handler in telegram-actions.ts
- Add delete action support in telegram message plugin adapter
- Add deleteMessage to TelegramActionConfig type
- Update message tool description to mention delete action
Usage:
- Via message tool: action="delete", chatId, messageId
- Can be disabled via channels.telegram.actions.deleteMessage=false
Limitations (Telegram API):
- Bot can delete its own messages in any chat
- Bot can delete others' messages only if admin with "Delete Messages"
- Messages older than 48h in groups may fail to delete
2026-01-15 00:29:53 +00:00
Peter Steinberger
9b7df414e6
test: add gemini 3 antigravity switch live repro
2026-01-15 00:29:53 +00:00
Peter Steinberger
5894ffe82e
refactor(auth): streamline allowFrom normalization
2026-01-14 23:42:50 +00:00
Peter Steinberger
57b4865ab3
fix(whatsapp): normalize user JIDs for group allowlists ( #838 )
...
Thanks @peschee.
Co-authored-by: Peter Siska <63866+peschee@users.noreply.github.com>
2026-01-14 23:25:42 +00:00
Peter Steinberger
fd41000bc3
test(whatsapp): add context isolation coverage
...
Includes outbound gating, threading fallback, and web auto-reply context assertions.
2026-01-14 23:23:36 +00:00