Skip to content

Releases: rmyndharis/OpenWA-plugins

voice-transcription v1.0.0

25 Jun 15:48
d1d44a9

Choose a tag to compare

Added

  • Initial release. Transcribes inbound WhatsApp voice notes via an OpenAI-compatible
    /v1/audio/transcriptions backend (self-hosted Speaches/faster-whisper, or hosted Groq/OpenAI) and
    delivers a message.transcription event 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:received hook 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/ogg so OpenAI-compatible servers accept WhatsApp's OGG/Opus without transcoding.
  • Guards: message-type filter (default voice), exact maxSizeBytes cost 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), or skipped (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, default off) for operators who
    want the transcript inside WhatsApp; self notes 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

25 Jun 16:02
5d8f9ab

Choose a tag to compare

Fixed

  • Translations now actually apply. The LibreTranslate client read the response with res.json(), but the
    sandboxed ctx.net.fetch returns 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.body directly.

Install: download group-translate.zip below and upload it in the OpenWA dashboard (Plugins → Install).

SHA-256: 0152b5bebc1a3bef96c8a8f596329ea1e5f7403ef2722c60afd0d2d66bb44b24

gsheets-logger v0.2.2

23 Jun 12:06
f593c5b

Choose a tag to compare

Fixed

  • flushIntervalSec and flushBatchSize are now clamped to safe positive values. A non-numeric or
    zero/negative interval previously coerced to NaN, 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

23 Jun 07:45

Choose a tag to compare

Added

  • Localized dashboard text (name, description, config field titles) for es, fr, it, ar, he, te, zh-CN,
    zh-HK via manifest.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

23 Jun 12:06
f593c5b

Choose a tag to compare

Fixed

  • Participant lookups now reject prototype keys (__proto__, constructor, prototype) and test
    existence with hasOwnProperty, 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 /translate response without a string translatedText now fails the call (counted by
    the circuit breaker and excluded from the reply) instead of posting the literal text undefined.

Install: download group-translate.zip below and upload it in the OpenWA dashboard (Plugins → Install).

SHA-256: cf31e787366c4b5753a83a027b65e3629aaba3b7858d7b362e9727893e6905c4

group-translate v1.0.2

23 Jun 08:16

Choose a tag to compare

Fixed

  • Telugu (te) localization: the libretranslateUrl field 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

23 Jun 07:45

Choose a tag to compare

Added

  • Localized dashboard text (name, description, config field titles) for es, fr, it, ar, he, te, zh-CN,
    zh-HK via manifest.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

23 Jun 01:58

Choose a tag to compare

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 /tr commands (help, status, on/off, setlang, auto, ignore/unignore, grant/revoke). Admin-gated
    via ctx.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 manifest net.allow allowlist. 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

23 Jun 18:07

Choose a tag to compare

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

23 Jun 12:06
f593c5b

Choose a tag to compare

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