Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,12 @@ This repository provides:
| [`chat-flow`](./chat-flow) | Interactive, stateful auto-reply: a trigger word starts a greeting + numbered menu, replies traverse a configurable menu tree, and per-chat state expires after 15 minutes. | 1.1.1 | stable |
| [`chatwoot-adapter`](./chatwoot-adapter) | Two-way sync between a WhatsApp session and a Chatwoot inbox: relays WhatsApp messages (1:1 and groups, with media) into Chatwoot as an API-channel inbox, sends agent replies back to WhatsApp, and hands a chat over to a human agent — silencing other OpenWA bots — when an agent takes it in Chatwoot. First consumer of the OpenWA Integration SDK v1; runs sandboxed in the plugin worker. | 0.8.0 | stable |
| [`faq-bot`](./faq-bot) | Auto-replies to inbound WhatsApp messages from configurable FAQ keyword/regex rules. | 0.2.1 | stable |
| [`group-translate`](./group-translate) | Auto-translates group messages between participants' languages via a LibreTranslate backend. Configure in-chat with /tr commands. Admin-gated; disabled until enabled. | 1.1.0 | stable |
| [`group-translate`](./group-translate) | Auto-translates group messages between participants' languages via a LibreTranslate backend. Configure in-chat with /tr commands. Admin-gated; disabled until enabled. | 1.1.1 | stable |
| [`gsheets-logger`](./gsheets-logger) | Logs WhatsApp message events to a Google Sheet via a service account. | 0.3.2 | stable |
| [`http-action`](./http-action) | Triggers safe REST API requests from WhatsApp commands and renders JSON responses back to chat. | 0.2.1 | stable |
| [`supabase-otp-hook`](./supabase-otp-hook) | Deliver Supabase Auth phone OTPs over WhatsApp. | 0.3.0 | beta |
| [`typebot-connector`](./typebot-connector) | Runs a Typebot flow as the brain of a WhatsApp bot: inbound messages drive a Typebot chat session via the live Chat API, and the bot's replies — text, media, and numbered-choice inputs — are sent back to WhatsApp. Auto-starts every chat, handles file-upload steps, and resets when the flow ends or after an idle timeout. Runs sandboxed in the plugin worker; no public URL or webhook required. | 0.2.1 | stable |
| [`voice-transcription`](./voice-transcription) | Transcribes inbound WhatsApp voice notes to text via an OpenAI-compatible speech-to-text backend (self-hosted Speaches/faster-whisper or hosted Groq/OpenAI) and delivers a `message.transcription` event to your webhook — so bots and AI can read and reply to audio. Off the message-delivery path; disabled until enabled. | 1.2.0 | beta |
| [`voice-transcription`](./voice-transcription) | Transcribes inbound WhatsApp voice notes to text via an OpenAI-compatible speech-to-text backend (self-hosted Speaches/faster-whisper or hosted Groq/OpenAI) and delivers a `message.transcription` event to your webhook — so bots and AI can read and reply to audio. Off the message-delivery path; disabled until enabled. | 1.2.1 | beta |
<!-- END PLUGIN CATALOG -->

The table above is generated from each plugin's `manifest.json` + `CHANGELOG.md` by `npm run catalog`
Expand Down
19 changes: 19 additions & 0 deletions group-translate/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,25 @@ The version here always matches `manifest.json`'s `version`.

## [Unreleased]

## [1.1.1] — 2026-08-01

No behaviour change. 1.1.0 has now been smoke-tested against a newer host, so the tested-version field
is updated to match.

### Verified

- **Confirmed against a live OpenWA 0.12.1 host**, with a connected WhatsApp session, driven by real
WhatsApp messages from a second connected number in a real WhatsApp group, against a real self-hosted
LibreTranslate instance (English + Indonesian models) reachable at `http://localhost:7001` from inside
the host container. `/tr status` reported `Translator: ok` — a live health probe of LibreTranslate
through the host-proxied `ctx.net.fetch`. `/tr on` returned `✅ Translation activated.`, and both
`/tr setlang en` (self) and `/tr setlang id <number>` applied and read back correctly in `/tr status`.
The message `good morning, how are you today` was answered with
`ID: selamat pagi, bagaimana kabarmu hari ini`.
- **The transformer-band fix from 1.1.0 holds**: the hook registered at priority 50, the Transformer
band assigned in `PLUGIN-STANDARD.md`.
- **Not covered:** load or concurrency.

## [1.1.0] — 2026-07-31

### Fixed
Expand Down
10 changes: 7 additions & 3 deletions group-translate/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@
| Field | Value |
| ----- | ----- |
| **Identifier** | `group-translate` |
| **Version** | 1.1.0 |
| **Released** | 2026-07-31 |
| **Version** | 1.1.1 |
| **Released** | 2026-08-01 |
| **Status** | stable |
| **Author** | Yudhi Armyndharis |
| **License** | MIT |
| **Type** | `extension` |
| **Requires OpenWA** | ≥ 0.7.0 (tested 0.8.1) |
| **Requires OpenWA** | ≥ 0.7.0 (tested 0.12.1) |
| **Keywords** | translation, libretranslate, i18n, groups, whatsapp, openwa |
| **Repository** | [OpenWA-plugins/group-translate](https://github.com/rmyndharis/OpenWA-plugins/tree/main/group-translate) |
<!-- END DETAILS -->
Expand Down Expand Up @@ -56,6 +56,10 @@ Default prefix `/tr` (configurable). Read-only commands are open; the rest are a
1. **Run a LibreTranslate instance.** The plugin calls its `/translate` endpoint over `ctx.net.fetch`.
Add the instance's `host:port` to the manifest `net.allow` before packaging, and — if it's on
`localhost`/a private host — also set `SSRF_ALLOWED_HOSTS` on the OpenWA host (see [Security](#security)).
The default `libretranslateUrl` (`http://localhost:7001`) *is* a loopback address, so out of the box
this plugin cannot reach its backend at all until this is done: set the environment variable
**`SSRF_ALLOWED_HOSTS`** on the OpenWA host itself — not in this plugin's config — e.g.
`SSRF_ALLOWED_HOSTS=localhost,127.0.0.1`.
2. Have OpenWA **≥ 0.7.0** running with a logged-in WhatsApp session for the group(s) you want to translate.
3. Install and enable the plugin (see [Install](#install)), then have a group admin run `/tr on`.

Expand Down
4 changes: 2 additions & 2 deletions group-translate/manifest.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"id": "group-translate",
"name": "Group Auto-Translation",
"version": "1.1.0",
"version": "1.1.1",
"type": "extension",
"main": "dist/index.js",
"description": "Auto-translates group messages between participants' languages via a LibreTranslate backend. Configure in-chat with /tr commands. Admin-gated; disabled until enabled.",
Expand All @@ -19,7 +19,7 @@
],
"status": "stable",
"minOpenWAVersion": "0.7.0",
"testedOpenWAVersion": "0.8.1",
"testedOpenWAVersion": "0.12.1",
"provides": [
"translation"
],
Expand Down
16 changes: 8 additions & 8 deletions plugins.json
Original file line number Diff line number Diff line change
Expand Up @@ -833,7 +833,7 @@
{
"id": "group-translate",
"name": "Group Auto-Translation",
"version": "1.1.0",
"version": "1.1.1",
"type": "extension",
"status": "stable",
"description": "Auto-translates group messages between participants' languages via a LibreTranslate backend. Configure in-chat with /tr commands. Admin-gated; disabled until enabled.",
Expand All @@ -848,12 +848,12 @@
"openwa"
],
"minOpenWAVersion": "0.7.0",
"testedOpenWAVersion": "0.8.1",
"releasedAt": "2026-07-31",
"testedOpenWAVersion": "0.12.1",
"releasedAt": "2026-08-01",
"repoPath": "group-translate",
"repoUrl": "https://github.com/rmyndharis/OpenWA-plugins",
"homepage": "https://github.com/rmyndharis/OpenWA-plugins/tree/main/group-translate",
"download": "https://github.com/rmyndharis/OpenWA-plugins/releases/download/group-translate-v1.1.0/group-translate.zip",
"download": "https://github.com/rmyndharis/OpenWA-plugins/releases/download/group-translate-v1.1.1/group-translate.zip",
"i18n": {
"es": {
"name": "Traducción Automática de Grupos",
Expand Down Expand Up @@ -1956,7 +1956,7 @@
{
"id": "voice-transcription",
"name": "Voice Note Transcription",
"version": "1.2.0",
"version": "1.2.1",
"type": "extension",
"status": "beta",
"description": "Transcribes inbound WhatsApp voice notes to text via an OpenAI-compatible speech-to-text backend (self-hosted Speaches/faster-whisper or hosted Groq/OpenAI) and delivers a `message.transcription` event to your webhook — so bots and AI can read and reply to audio. Off the message-delivery path; disabled until enabled.",
Expand All @@ -1973,12 +1973,12 @@
"openwa"
],
"minOpenWAVersion": "0.7.0",
"testedOpenWAVersion": "0.8.1",
"releasedAt": "2026-07-31",
"testedOpenWAVersion": "0.12.1",
"releasedAt": "2026-08-01",
"repoPath": "voice-transcription",
"repoUrl": "https://github.com/rmyndharis/OpenWA-plugins",
"homepage": "https://github.com/rmyndharis/OpenWA-plugins/tree/main/voice-transcription",
"download": "https://github.com/rmyndharis/OpenWA-plugins/releases/download/voice-transcription-v1.2.0/voice-transcription.zip",
"download": "https://github.com/rmyndharis/OpenWA-plugins/releases/download/voice-transcription-v1.2.1/voice-transcription.zip",
"i18n": {
"es": {
"name": "Transcripción de Notas de Voz",
Expand Down
18 changes: 18 additions & 0 deletions voice-transcription/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,24 @@ All notable changes to the Voice Note Transcription plugin are documented here.

## [Unreleased]

## [1.2.1] — 2026-08-01

No behaviour change. 1.2.0 has now been smoke-tested against a newer host, so the tested-version field
is updated to match.

### Verified

- **Confirmed against a live OpenWA 0.12.1 host**, with a connected WhatsApp session, against a real
self-hosted faster-whisper server (`Systran/faster-whisper-small.en`) speaking the OpenAI-compatible
`/v1/audio/transcriptions` API at `http://localhost:9010`, with `chatDelivery: reply`. A genuine
Ogg/Opus WhatsApp voice note was sent from a second connected number; the plugin downloaded the media
through the host, uploaded it as multipart through `ctx.net.fetch`, and the ASR server logged
`POST /v1/audio/transcriptions 200`. The spoken sentence came back into the chat as text, matching what
was said.
- **The transformer-band fix from 1.2.0 holds**: the hook registered at priority 40, the Transformer
band assigned in `PLUGIN-STANDARD.md`.
- **Not covered:** load, concurrency, or long audio.

## [1.2.0] — 2026-07-31

### Fixed
Expand Down
14 changes: 8 additions & 6 deletions voice-transcription/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,13 @@
| Field | Value |
| ----- | ----- |
| **Identifier** | `voice-transcription` |
| **Version** | 1.2.0 |
| **Released** | 2026-07-31 |
| **Version** | 1.2.1 |
| **Released** | 2026-08-01 |
| **Status** | beta |
| **Author** | Yudhi Armyndharis |
| **License** | MIT |
| **Type** | `extension` |
| **Requires OpenWA** | ≥ 0.7.0 (tested 0.8.1) |
| **Requires OpenWA** | ≥ 0.7.0 (tested 0.12.1) |
| **Keywords** | transcription, speech-to-text, stt, whisper, voice, audio, whatsapp, openwa |
| **Repository** | [OpenWA-plugins/voice-transcription](https://github.com/rmyndharis/OpenWA-plugins/tree/main/voice-transcription) |
<!-- END DETAILS -->
Expand Down Expand Up @@ -88,9 +88,11 @@ out of order — do not assume ordering).
whatever you configure without you having to edit and re-package the plugin. The manifest also ships
a static `net.allow` for `localhost`, `127.0.0.1`, `api.groq.com:443` and `api.openai.com:443`,
which is what covers a plain-`http` local backend (config-derived hosts are https-only).
3. **For a localhost STT/delivery target**, also set `SSRF_ALLOWED_HOSTS` on the OpenWA host (the SSRF guard
blocks loopback by default), e.g. `SSRF_ALLOWED_HOSTS=127.0.0.1,localhost`. Prefer a literal
`http://127.0.0.1:PORT` target (nothing to DNS-rebind).
3. **For a localhost STT/delivery target** — any self-hosted Speaches/faster-whisper deployment; a hosted
Groq/OpenAI endpoint needs nothing here — also set the environment variable `SSRF_ALLOWED_HOSTS` on the
OpenWA host itself (not in this plugin's config; the SSRF guard blocks loopback by default), e.g.
`SSRF_ALLOWED_HOSTS=127.0.0.1,localhost`. Prefer a literal `http://127.0.0.1:PORT` target (nothing to
DNS-rebind).
4. **Stand up your delivery endpoint** (an n8n webhook, a Worker, your bot) and put its URL in
**Delivery webhook URL**.

Expand Down
4 changes: 2 additions & 2 deletions voice-transcription/manifest.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"id": "voice-transcription",
"name": "Voice Note Transcription",
"version": "1.2.0",
"version": "1.2.1",
"type": "extension",
"main": "dist/index.js",
"description": "Transcribes inbound WhatsApp voice notes to text via an OpenAI-compatible speech-to-text backend (self-hosted Speaches/faster-whisper or hosted Groq/OpenAI) and delivers a `message.transcription` event to your webhook — so bots and AI can read and reply to audio. Off the message-delivery path; disabled until enabled.",
Expand All @@ -21,7 +21,7 @@
],
"status": "beta",
"minOpenWAVersion": "0.7.0",
"testedOpenWAVersion": "0.8.1",
"testedOpenWAVersion": "0.12.1",
"provides": [
"transcription"
],
Expand Down
Loading