v0.10.1
Added
-
Design draft
docs/28-multitenancy.md: the enterprise multitenancy proposal — tenant entity,
named users with per-tenant roles, TOTP two-factor auth, per-tenant branding/isolation/quotas,
and the migration path from single-operator deployments (nothing implemented yet). -
The Chats room header now shows the contact or group profile picture (fetched through the existing
GET /sessions/:id/contacts/:id/profile-pictureendpoint, cached for one hour, with the icon
fallback preserved when the engine returns no URL), a floating scroll-to-bottom button appears in
the messages pane once the reader scrolls away from the latest message, and the room header shows
the prettified phone number (e.g.628123456789@c.us→+62 812 345 6789) as the primary
subtitle for personal chats — with the raw JID retained on a muted monospace line for technical
use (lid resolution, webhook payloads, group ids). The composer send icon was also enlarged to
better match its 48 px button. -
The linked-device name shown in WhatsApp's Settings → Linked Devices is now brandable via the
optionalBAILEYS_BROWSER_NAMEenv var (applies to new pairings; default unchanged:OpenWA).
Thanks @clicsoluciones. (#822)
Fixed
- The chat header no longer formats a LID privacy id as a fake phone number (e.g. "+26 281 346
125 0071"): digit-only LIDs and group ids are rejected by the phone formatter, and personal @lid
chats now resolve and display the real number through the engine (cached a day). Chat list rows
also render profile pictures now, sharing the room header's 1-hour cache instead of static icons. - Chat-list avatars no longer burst into HTTP 429s: profile pictures for the whole sidebar are
batch-resolved in ONE request (GET .../contacts/profile-pictures?ids=…, up to 50 ids) instead
of one parallel fetch per row, which exhausted the per-IP throttle. - Chat-list avatars no longer stall on long sidebars: the batch endpoint caps engine lookups at a
per-id deadline (a hanging id resolves null instead of holding the whole batch), and the request
now resolves the sidebar's TOP 50 ids in list order so visible rows get their pictures first.