Releases: rmyndharis/OpenWA-plugins
voice-transcription v1.0.0
Added
- Initial release. Transcribes inbound WhatsApp voice notes via an OpenAI-compatible
/v1/audio/transcriptionsbackend (self-hosted Speaches/faster-whisper, or hosted Groq/OpenAI) and
delivers amessage.transcriptionevent to a configurable webhook — the integration channel for
bots/AI to read and reply to audio. - Runs off the message-delivery critical path: the
message:receivedhook returns immediately and
the STT call + delivery run as an un-awaited promise, so transcription never blocks or delays message
delivery (and is not bound by the host's 5s hook budget). - Audio is uploaded as a binary multipart body (intact across the sandbox boundary); the part is labeled
voice.ogg/audio/oggso OpenAI-compatible servers accept WhatsApp's OGG/Opus without transcoding. - Guards: message-type filter (default
voice), exactmaxSizeBytescost guard, best-effort per-session
hourly rate limit, and a best-effort idempotency guard that suppresses near-simultaneous engine re-fires. - Status events: delivers
completed(with transcript),failed(STT errored), orskipped(too large,
rate-limited, empty) — so a consumer always knows a voice note was received even when it can't be read. - Optional in-chat delivery (
chatDelivery:off|self|reply, defaultoff) for operators who
want the transcript inside WhatsApp;selfnotes it to your own number without leaking to the sender.
Webhook delivery is optional too — the plugin can run chat-only. - Webhook payloads are HMAC-SHA256 signed in
X-OpenWA-Signature(same scheme as OpenWA core webhooks)
when a delivery secret is set, so existing verification reuses the same check. - STT circuit breaker: after repeated failures the backend is skipped for a cooldown, so a degraded
provider isn't hammered. - Fail-open throughout — any STT or delivery error is logged and skipped, never disrupting delivery.
- The delivered transcript is marked
untrusted: true(source: "speech-to-text"): downstream LLM
consumers must treat it as user-role input.
Install: download voice-transcription.zip below and upload it in the OpenWA dashboard (Plugins → Install).
SHA-256: 375315ad9cd2874ee351853e459be6ec039226387b3df26157b5246d471ab26d
group-translate v1.0.4
Fixed
- Translations now actually apply. The LibreTranslate client read the response with
res.json(), but the
sandboxedctx.net.fetchreturns the body as a string and provides no.json()method (functions can't
cross the worker boundary) — so every call threw and failed open, a silent no-op. The client now parses
res.bodydirectly.
Install: download group-translate.zip below and upload it in the OpenWA dashboard (Plugins → Install).
SHA-256: 0152b5bebc1a3bef96c8a8f596329ea1e5f7403ef2722c60afd0d2d66bb44b24
gsheets-logger v0.2.2
Fixed
flushIntervalSecandflushBatchSizeare now clamped to safe positive values. A non-numeric or
zero/negative interval previously coerced toNaN, which made the flush timer fire roughly every
millisecond (a hot-loop that burns CPU and Google Sheets API quota). Invalid values now fall back to
the documented defaults (5s / 20 rows).
Install: download gsheets-logger.zip below and upload it in the OpenWA dashboard (Plugins → Install).
SHA-256: 956ff46aa8d9e30e33f01fb65023389e7ff559deb3d3dcd89f84c991d4cc2ec1
gsheets-logger v0.2.1
Added
- Localized dashboard text (
name,description, config field titles) for es, fr, it, ar, he, te, zh-CN,
zh-HK viamanifest.i18n. English remains the default + fallback. Translations are machine-generated;
human review recommended for ar/he/te.
Install: download gsheets-logger.zip below and upload it in the OpenWA dashboard (Plugins → Install).
SHA-256: 5c09f94ee7d7f43da32de90f783b63d5e44dbf885d289996dc68e6a5d5f15157
group-translate v1.0.3
Fixed
- Participant lookups now reject prototype keys (
__proto__,constructor,prototype) and test
existence withhasOwnProperty, so a crafted participant/target id can no longer read or write
Object.prototype. - Concurrent messages for the same group are serialized through a per-(session, chat) lock, closing a
load→mutate→save race that could duplicate the help announcement or drop a participant-language update.
The lock map self-evicts when a chat's queue drains. - A LibreTranslate
/translateresponse without a stringtranslatedTextnow fails the call (counted by
the circuit breaker and excluded from the reply) instead of posting the literal textundefined.
Install: download group-translate.zip below and upload it in the OpenWA dashboard (Plugins → Install).
SHA-256: cf31e787366c4b5753a83a027b65e3629aaba3b7858d7b362e9727893e6905c4
group-translate v1.0.2
Fixed
- Telugu (
te) localization: thelibretranslateUrlfield title was left in English ("LibreTranslate URL");
it is now localized to "LibreTranslate చిరునామా", matching the other locales.
Install: download group-translate.zip below and upload it in the OpenWA dashboard (Plugins → Install).
SHA-256: 984e00a9e282116915186d69d02b32a8e404ab07856538ddea0064fdd0e3cc67
group-translate v1.0.1
Added
- Localized dashboard text (
name,description, config field titles) for es, fr, it, ar, he, te, zh-CN,
zh-HK viamanifest.i18n. English remains the default + fallback. Translations are machine-generated;
human review recommended for ar/he/te.
Install: download group-translate.zip below and upload it in the OpenWA dashboard (Plugins → Install).
SHA-256: 79e6dc37d6841bd6558c98afcda057d2642a6b6bd54601d6858961bfe3d27333
group-translate v1.0.0
First release. Built against the OpenWA v0.7 plugin contract.
Added
- Auto-translation of group messages between participants' languages via a LibreTranslate backend, with
in-chat/trcommands (help, status, on/off, setlang, auto, ignore/unignore, grant/revoke). Admin-gated
viactx.engine.getGroupInfo; disabled until enabled. - All outbound calls go through the host's SSRF-guarded
ctx.net.fetch; the LibreTranslate host must be in
the manifestnet.allowallowlist. Per-call timeout defaults to 4000ms (≤ the host hook budget), with a
circuit breaker that backs off a flaky backend.
Install: download group-translate.zip below and upload it in the OpenWA dashboard (Plugins → Install).
SHA-256: 7114d81cfbc75cc84a76f8b07be60f29b1f502a01d62adb0daa69c3435d75e03
faq-bot v0.1.4
Changed
- The Rules (JSON) field now renders as a multi-line editor (manifest
textarea) and its
description carries a copy-pasteable example, so the expected JSON shape is obvious.
Fixed
- A single rule object is now accepted and wrapped in an array automatically, instead of failing
with "rules must be a JSON array" — pasting one{ "mode", "pattern", "reply" }just works. - Invalid-rules errors now include a concrete example and a "use double quotes, not single" hint,
so the common single-quote / unquoted-key mistakes are easy to correct.
Install: download faq-bot.zip below and upload it in the OpenWA dashboard (Plugins → Install).
SHA-256: 8bfa7e6d21f70ec16af0c58ef857d556f33e37cee52dbe55c189901464fdff5c
faq-bot v0.1.3
Fixed
- The regex safety check now also rejects a nested unbounded quantifier hidden behind one or more
wrapping groups (e.g.((a+))+,(((a+)))*). The previous check only inspected a group that was
directly quantified, so an extra layer of parentheses could slip a catastrophic pattern through.
Patterns that carry only a single quantifier (e.g.((ab)+)) are still accepted.
Install: download faq-bot.zip below and upload it in the OpenWA dashboard (Plugins → Install).
SHA-256: 818b5eedc515d75530733161e3d6690b64f17e64c06690c3b3dfd49e5af2e400