v8.9.0

pbakaus/impeccablev8.9.0Jun 27, 2026by aldinokemal

AI Summary

This release focuses on WhatsApp Web Multidevice features including persisting media direct paths for downloads, a selective call rejection API, and improving SQLite connection handling to reduce timeouts under load.

Key Highlights

  • Persisted WhatsApp media direct paths for download support
  • New selective call rejection API and UI
  • SQLite WAL read concurrency support
  • Handling of empty chat messages without errors

New Features

  • WhatsApp media direct path persistence
  • Selective call rejection API
  • SQLite connection pooling configuration
  • Empty chat message handling

Full Release Notes

## What's New in v8.9.0

šŸš€ **Minor Release: Media Direct-Path Downloads, Selective Call Rejection, SQLite Send Reliability & Empty Chat Polling**

This release persists WhatsApp media direct paths so downloads keep working after URL expiry, adds a device-scoped call-reject API and UI, reduces random API send timeouts under heavy incoming message load, and returns empty chat-message responses instead of server errors when a chat row has not been stored yet.

---

## ✨ New Features

### Selective Call Rejection API (#735)
- Adds `POST /call/reject` for rejecting a specific incoming call with `caller_jid` and `call_id`, using the same whatsmeow `RejectCall` path as global auto-reject
- Keeps existing `WHATSAPP_AUTO_REJECT_CALL` behavior unchanged while enabling per-call business logic from webhook consumers
- Adds a device-scoped REST handler, validation, usecase/domain wiring, and a new embedded UI card for manual call rejection
- Documents the endpoint and webhook-driven usage examples in OpenAPI and webhook payload docs

---

## šŸ› Bug Fixes

### Persisted WhatsApp Media Direct Paths (#731)
- Stores WhatsApp media `direct_path` alongside legacy media URLs in chat storage
- Rebuilds downloadable media from the stored direct path, with URL fallback for older rows
- Updates REST downloads, Chatwoot sync, and history-sync reconstruction to use the same downloadable-message helper
- Adds repository and utility coverage for direct-path extraction, persistence, fallback, and media reconstruction

### Random API Send Timeouts Under Load (#732)
- Adds `CHAT_STORAGE_MAX_OPEN_CONNS` with a default of 5 so chat storage can use SQLite WAL read concurrency instead of serializing all device, webhook, API, and worker access through one connection
- Applies the configured connection count to both open and idle chat-storage connections, clamped to a minimum of 1 for operators who need the previous behavior
- Raises the CGO SQLite busy timeout from 5s to 30s, matching the purego build and reducing `SQLITE_BUSY` failures during write contention
- Documents the new environment variable in `src/.env.example`

### Empty Chat Messages for Missing Chat Rows (#740)
- `GET /chat/{jid}/messages` now treats a missing chat row as an empty conversation instead of returning HTTP 500
- Returns the normal empty pagination shape with minimal chat info for brand-new or not-yet-upserted chats
- Keeps existing behavior unchanged for chats that are already present in storage

---

## šŸ”§ Technical Improvements

### Dependency Updates
- `go.mau.fi/whatsmeow`: refreshed to `v0.0.0-20260622185415-5f04eac6dbbb`
- `github.com/vektah/gqlparser/v2`: updated to `v2.5.35`
- Related Go dependency checksums refreshed through `go.mod` / `go.sum`

### Release Metadata
- `AppVersion` is now `v8.9.0`, so runtime status matches the published release tag

---

## What's Changed
* Persist WhatsApp media direct paths for download support by @aldinokemal in https://github.com/aldinokemal/go-whatsapp-web-multidevice/pull/731
* fix(chat): return empty result instead of 500 when chat row is absent by @huutranluc694-bot in https://github.com/aldinokemal/go-whatsapp-web-multidevice/pull/740
* feat(call): add API endpoint for rejecting incoming calls by @N0N4M3BNS in https://github.com/aldinokemal/go-whatsapp-web-multidevice/pull/735
* Fix: Random API send timeouts under heavy incoming message load by @N0N4M3BNS in https://github.com/aldinokemal/go-whatsapp-web-multidevice/pull/732
* chore: update whatsmeow to latest by @aldinokemal
* chore: bump version to v8.9.0 by @aldinokemal

## New Contributors
* @huutranluc694-bot made their first contribution in https://github.com/aldinokemal/go-whatsapp-web-multidevice/pull/740
* @N0N4M3BNS made their first contribution in https://github.com/aldinokemal/go-whatsapp-web-multidevice/pull/735

**Full Changelog**: https://github.com/aldinokemal/go-whatsapp-web-multidevice/compare/v8.8.0...v8.9.0