diff --git a/CHANGELOG.md b/CHANGELOG.md index 43c08272..2b775446 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.4.4] - 2026-06-20 + +A reliability and correctness patch. Engine: Baileys reconnect no longer leaks its socket, and a session +keeps its operator config even if the engine plugin fails to enable before `onLoad`. Templates: names are now +unique per session (deterministic resolve, `409` on duplicate, with a lossless de-duplicating migration). +Tooling: the migration CLI can manage the main (auth/audit) connection, and the Docker image ships `procps` +so a missing-`ps` cleanup path can't crash the container. **One behavior change to note:** `PUT /settings` +now returns `501` — settings are environment-derived and read-only at runtime — instead of a misleading `200` +(no dashboard flow uses the write). + ### Added - **CLI migration commands for the main (auth/audit) connection.** The app runs the main connection as a separate diff --git a/README.md b/README.md index d3c3cff5..dbc5fc75 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@

CI - Version + Version License Node NestJS diff --git a/dashboard/package.json b/dashboard/package.json index 13e8fdcf..24aabb71 100644 --- a/dashboard/package.json +++ b/dashboard/package.json @@ -1,7 +1,7 @@ { "name": "dashboard", "private": true, - "version": "0.4.3", + "version": "0.4.4", "type": "module", "scripts": { "dev": "vite", diff --git a/docs/07-api-collection.md b/docs/07-api-collection.md index fc3fae43..26036a9d 100644 --- a/docs/07-api-collection.md +++ b/docs/07-api-collection.md @@ -71,7 +71,7 @@ curl -H "X-API-Key: $API_KEY" \ ```json { "status": "ok", - "version": "0.4.3", + "version": "0.4.4", "uptime": 86400, "timestamp": "2026-02-02T10:30:00Z", "checks": { diff --git a/docs/13-horizontal-scaling.md b/docs/13-horizontal-scaling.md index 1ed1b368..25522983 100644 --- a/docs/13-horizontal-scaling.md +++ b/docs/13-horizontal-scaling.md @@ -105,7 +105,7 @@ version: '3.8' services: openwa: - image: ghcr.io/rmyndharis/openwa:0.4.3 + image: ghcr.io/rmyndharis/openwa:0.4.4 deploy: replicas: 1 # MUST stay 1 until session-claim is implemented — multiple replicas on one session volume corrupt WhatsApp auth (H1/H11) update_config: @@ -263,7 +263,7 @@ spec: spec: containers: - name: openwa - image: ghcr.io/rmyndharis/openwa:0.4.3 + image: ghcr.io/rmyndharis/openwa:0.4.4 ports: - containerPort: 2785 name: http diff --git a/docs/15-project-roadmap.md b/docs/15-project-roadmap.md index 587de275..f05f9df9 100644 --- a/docs/15-project-roadmap.md +++ b/docs/15-project-roadmap.md @@ -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.3 have since shipped (see the CHANGELOG); v1.0.0 +> Versions 0.1.7 through 0.4.4 have since shipped (see the CHANGELOG); v1.0.0 > onward is forward-looking. ```mermaid diff --git a/docs/README.md b/docs/README.md index 2599eb84..940f792b 100644 --- a/docs/README.md +++ b/docs/README.md @@ -16,7 +16,7 @@

- Version + Version License Node NestJS diff --git a/package.json b/package.json index 30a48308..4d7a8b83 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "openwa", - "version": "0.4.3", + "version": "0.4.4", "description": "Open Source WhatsApp API Gateway - Free, Self-Hosted HTTP API for WhatsApp", "author": "Yudhi Armyndharis & OpenWA Contributors", "private": true, diff --git a/src/config/swagger.config.ts b/src/config/swagger.config.ts index 7527df10..345b2f5a 100644 --- a/src/config/swagger.config.ts +++ b/src/config/swagger.config.ts @@ -14,7 +14,7 @@ export function createSwaggerConfig(): Omit { new DocumentBuilder() .setTitle('OpenWA API') .setDescription('Open Source WhatsApp API Gateway - Free, Self-Hosted HTTP API') - .setVersion('0.4.3') + .setVersion('0.4.4') .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.