All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Admin console HTML UI: server-rendered dashboard, conversations, messages, events pages (Jinja2 + HTMX, no JS build), HTMX row partials, bundled stylesheet,
docs/admin.md. - Admin thread view, content/date search, and pagination across list pages.
- Typing indicators now follow Meta's API (mark-read with typing indicator against an inbound message ID) instead of the rejected standalone
type: typingpayload.messages.send_typing()takesmessage_id; the legacy shape stays frozen underwhatsloon.compat.
ContactsMessagenow requiresname.formatted_nameper Meta's schema, failing fast client-side instead of with a Meta 400.
3.0.0 - 2026-09-06
- v3 typed messaging: Pydantic models, builders, and canonical serializers for every 2.x sender type with legacy parity tests.
wa.messagesservice on sync/async clients, including contextual replies viareply_to.docs/messages.mdwith the 2.x mapping table andexamples/v3_messages.py.- v3 webhook pipeline: HMAC verification, handshake, version-aware parsing with unknown preservation, fingerprint dedupe, routing/filters, sync/async/queued handling, FastAPI adapter,
docs/webhooks.md,examples/v3_webhooks.py. - v3 resources: media upload/download/delete (
wa.media), template management and WABA/phone clients (wa.templates,wa.business), Flows endpoint encryption (whatsloon[flows]),docs/resources.md, examples. - v3 reliability: token-bucket pacing, circuit breaker, bulk senders with per-item outcomes, OTel observability middleware (
whatsloon[observability]),docs/reliability.md,examples/v3_bulk.py. - v3 modern APIs: group management and group messaging (
wa.groups), voice calling (wa.calls), BSUID/group/call webhook coverage, Direct Send tracking passthrough,docs/modern.md,examples/v3_modern.py. - v3 ecosystem: testing fakes (
whatsloon.testing),whatsloonCLI (init/doctor/send/webhook/template/flow/migrate), migration audit,docs/ecosystem.md.
- Sync and async senders for text, media, template, interactive, and location messages.
- Custom client composition via mixins with
WhatsAppBaseClient. - Full test suite with coverage reporting.
- MkDocs Material documentation with API reference.
- Runnable examples with
.env.example. - CI matrix for Python 3.9-3.13, CodeQL, dependency review, docs deploy, and trusted-publishing release workflow.
- OSS standards: MIT license, code of conduct, contributing guide, security policy, issue templates, Dependabot, labeler, release drafter, funding, EditorConfig, pre-commit.
- Modernized packaging to
pyproject.tomlwith typed package and optionaltest,dev, anddocsextras. - Hardened
WhatsAppBaseClientvalidation and normalization. - Breaking: package moved to
src/layout; version 3.0.0. The 2.x API remains available (top-level classes pluswhatsloon.compatwith deprecation warnings); per-sendto=replaces pinned recipients in new code.