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
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## [0.4.5] - 2026-06-20

A Baileys engine quality-and-correctness release, plus a chat-history enhancement. **Identity:** inbound
Baileys message ids are now engine-neutral (`@c.us`, matching whatsapp-web.js), the dashboard Chats list
shows saved/contact names instead of raw JIDs, and `@lid` (privacy-id) senders resolve to a phone number.
**Messaging:** an opt-in `deep=true` mode lets the live chat-history endpoint reach up to 2000 messages
back on whatsapp-web.js, and Baileys can now send captions with document messages. **One behavior change
to note:** `message.received` / `revoked` / `reaction` webhook and WebSocket payloads from a Baileys
session now carry `@c.us` ids where they previously carried `@s.whatsapp.net` (or a resolved `@lid`) — a
consumer that stored or compared the old ids will see the new value.

### Added

- **Opt-in deep chat history (`deep=true`).** `GET /sessions/:id/messages/:chatId/history` was capped at
Expand Down Expand Up @@ -48,6 +59,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
`@s.whatsapp.net` (or a resolved `@lid`); a consumer that stored or compared the old ids will see the
new value. Outbound sending and contact/chat list ids are unchanged for now.

- **Baileys engine: documents can now be sent with a caption.** `sendDocumentMessage` dropped
`media.caption` on the Baileys engine, while whatsapp-web.js already forwarded it. Baileys now sends the
caption too (parity across engines); the document stores the caption as its message body, falling back
to the filename when absent. (#363)

## [0.4.4] - 2026-06-20

A reliability and correctness patch. Engine: Baileys reconnect no longer leaks its socket, and a session
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@

<p align="center">
<a href="https://github.com/rmyndharis/OpenWA/actions/workflows/ci.yml"><img src="https://github.com/rmyndharis/OpenWA/actions/workflows/ci.yml/badge.svg?branch=main" alt="CI"/></a>
<img src="https://img.shields.io/badge/version-0.4.4-blue.svg" alt="Version"/>
<img src="https://img.shields.io/badge/version-0.4.5-blue.svg" alt="Version"/>
<img src="https://img.shields.io/badge/license-MIT-green.svg" alt="License"/>
<img src="https://img.shields.io/badge/node-22_LTS-brightgreen.svg" alt="Node"/>
<img src="https://img.shields.io/badge/NestJS-11.x-red.svg" alt="NestJS"/>
Expand Down
2 changes: 1 addition & 1 deletion dashboard/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "dashboard",
"private": true,
"version": "0.4.4",
"version": "0.4.5",
"type": "module",
"scripts": {
"dev": "vite",
Expand Down
2 changes: 1 addition & 1 deletion docs/07-api-collection.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ curl -H "X-API-Key: $API_KEY" \
```json
{
"status": "ok",
"version": "0.4.4",
"version": "0.4.5",
"uptime": 86400,
"timestamp": "2026-02-02T10:30:00Z",
"checks": {
Expand Down
4 changes: 2 additions & 2 deletions docs/13-horizontal-scaling.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ version: '3.8'

services:
openwa:
image: ghcr.io/rmyndharis/openwa:0.4.4
image: ghcr.io/rmyndharis/openwa:0.4.5
deploy:
replicas: 1 # MUST stay 1 until session-claim is implemented — multiple replicas on one session volume corrupt WhatsApp auth (H1/H11)
update_config:
Expand Down Expand Up @@ -263,7 +263,7 @@ spec:
spec:
containers:
- name: openwa
image: ghcr.io/rmyndharis/openwa:0.4.4
image: ghcr.io/rmyndharis/openwa:0.4.5
ports:
- containerPort: 2785
name: http
Expand Down
2 changes: 1 addition & 1 deletion docs/15-project-roadmap.md
Original file line number Diff line number Diff line change
Expand Up @@ -491,7 +491,7 @@ v0.1.0 Release Package:
## 15.6 Future Roadmap (v0.3.0+)

> **Note:** Version 0.1.0 is the initial stable release including all features from Phases 1-3.
> Versions 0.1.7 through 0.4.4 have since shipped (see the CHANGELOG); v1.0.0
> Versions 0.1.7 through 0.4.5 have since shipped (see the CHANGELOG); v1.0.0
> onward is forward-looking.
```mermaid
Expand Down
2 changes: 1 addition & 1 deletion docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
</p>

<p align="center">
<img src="https://img.shields.io/badge/version-0.4.4-blue.svg" alt="Version"/>
<img src="https://img.shields.io/badge/version-0.4.5-blue.svg" alt="Version"/>
<img src="https://img.shields.io/badge/license-MIT-green.svg" alt="License"/>
<img src="https://img.shields.io/badge/node-22_LTS-brightgreen.svg" alt="Node"/>
<img src="https://img.shields.io/badge/NestJS-11.x-red.svg" alt="NestJS"/>
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "openwa",
"version": "0.4.4",
"version": "0.4.5",
"description": "Open Source WhatsApp API Gateway - Free, Self-Hosted HTTP API for WhatsApp",
"author": "Yudhi Armyndharis & OpenWA Contributors",
"private": true,
Expand Down
2 changes: 1 addition & 1 deletion src/config/swagger.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export function createSwaggerConfig(): Omit<OpenAPIObject, 'paths'> {
new DocumentBuilder()
.setTitle('OpenWA API')
.setDescription('Open Source WhatsApp API Gateway - Free, Self-Hosted HTTP API')
.setVersion('0.4.4')
.setVersion('0.4.5')
.addApiKey({ type: 'apiKey', name: 'X-API-Key', in: 'header' }, API_KEY_SECURITY_SCHEME)
// Apply the scheme globally so Swagger UI sends the key with every request
// (mirrors the global ApiKeyGuard). Without this, "Authorize" is cosmetic.
Expand Down
Loading