chengyongru
a6b68178aa
fix(whatsapp): allow group ids in allowFrom ( #4834 )
2026-07-19 19:16:37 +08:00
chengyongru
4c0e9b9f46
test: cover WhatsApp read receipts
...
maintainer edit: add focused coverage for the new best-effort mark_read path and remove an unused helper argument.
2026-06-30 15:21:25 +08:00
chengyongru
fbf96a3502
fix(whatsapp): add bridge migration compatibility
2026-06-27 11:05:03 +08:00
chengyongru
2a9e288dfe
refactor(whatsapp): replace bridge with neonize
2026-06-27 11:05:03 +08:00
franciscomaestre
99e158c062
feat(whatsapp): seed LID->phone mappings on startup
...
WhatsApp can deliver a sender LID instead of a phone number. The channel
already learns the LID->phone mapping at runtime, but only after a message
that carries both values, so the first message from a contact can't be
resolved to a phone number.
Seed the mapping on startup from two sources:
- reverse mapping files the bridge persists in the auth directory
(lid-mapping-<lid>_reverse.json), resolved via get_runtime_subdir so it
respects a custom runtime dir
- a new optional channels.whatsapp.lidMappings config dict for static
mappings (takes precedence over the on-disk files)
Malformed/empty mapping files are ignored rather than failing startup.
Adds tests for both sources, precedence, malformed files and the
no-auth-dir case, plus docs for the new config field.
2026-06-21 13:05:06 +08:00
chengyongru
e1ff0f37d9
fix: preserve WhatsApp forwarded metadata
...
maintainer edit: carry the bridge isForwarded flag into channel metadata so forwarded voice messages remain distinguishable after transcription.
2026-06-12 18:21:47 +08:00
Xubin Ren
9c81280300
feat(transcription): add shared voice input support ( #4232 )
...
* feat(webui): add voice transcription input
* feat(webui): render ANSI output in code blocks
* refactor(webui): isolate voice recorder logic
* refactor(transcription): keep websocket ingress thin
* refactor(transcription): resolve channel audio settings on demand
* style(webui): neutralize voice waveform color
* feat(webui): add voice input tooltip
* feat(webui): add voice input keyboard shortcut
* fix(webui): distinguish voice shortcut platforms
* fix(webui): place voice button after model selector
* refactor(webui): share voice hold recording helpers
* fix(desktop): allow microphone voice input
* fix(webui): stabilize token usage month labels
* feat(webui): show voice input on settings overview
* fix(webui): label voice capability as recognition
* fix(webui): align capability overview status
* refactor(webui): isolate transcription socket handling
* fix(webui): soften silent voice waveform
* refactor(audio): clarify transcription service location
* docs(transcription): clarify audio and provider boundaries
* fix(exec): reduce session output polling flake
2026-06-09 01:08:49 +08:00
dvp
4f5f965f09
fix(whatsapp): handle LID group mentions ( #2663 )
...
Co-authored-by: Xubin Ren <52506698+Re-bin@users.noreply.github.com>
2026-06-07 18:02:39 +08:00
Xubin Ren
4db50f2e32
fix(channels): reject unauthorized inbound before side effects
...
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-05 23:16:36 +08:00
Xubin Ren
897d5a7e58
test: add regression tests for JID suffix classification and LID cache
...
Made-with: Cursor
2026-04-06 06:19:06 +00:00
Xubin Ren
35dde8a30e
refactor: unify voice transcription config across all channels
...
- Move transcriptionProvider to global channels config (not per-channel)
- ChannelManager auto-resolves API key from matching provider config
- BaseChannel gets transcription_provider attribute, no more getattr hack
- Remove redundant transcription fields from WhatsAppConfig
- Update README: document transcriptionProvider, update provider table
Made-with: Cursor
2026-04-06 06:07:30 +00:00
Xubin Ren
7b7a3e5748
fix: media_paths NameError, import order, add error logging and tests
...
- Move media_paths assignment before voice message handling to prevent
NameError at runtime
- Fix broken import layout in transcription.py (httpx/loguru after class)
- Add error logging to OpenAITranscriptionProvider matching Groq style
- Add regression tests for voice transcription and no-media fallback
Made-with: Cursor
2026-04-06 06:01:14 +00:00
Xubin Ren
1c1eee523d
fix: secure whatsapp bridge with automatic local auth token
2026-04-04 14:16:46 +00:00
chengyongru
72acba5d27
refactor(tests): optimize unit test structure
2026-03-24 15:12:22 +08:00