Skip to content

Releases: erancybersec/evolution-API-webchat-UI

v1.2.0 — Background Tab Scheduler

10 Apr 14:12

Choose a tag to compare

What's New

Scheduler — Background Tab Support

Scheduled messages now fire on time even when the tab is in the background.

Problem: Browsers aggressively throttle setInterval in hidden/background tabs — a 30-second timer could be delayed by a minute or more, causing scheduled sends to miss their window.

Fix: The scheduler tick is now driven by a Web Worker. Worker timers run on a separate thread and are not subject to the same throttling. The tab just needs to stay open — it does not need to be the active/focused tab.

  • Falls back to plain setInterval in environments without Worker support
  • All UI copy updated to clarify "tab open, not necessarily active"

Changelog

See CHANGELOG.md for full history.

v1.1.0 — Delete Message + RTL + Security Fixes

10 Apr 11:05

Choose a tag to compare

What's New in v1.1.0

New Features

Delete Message

WhatsApp-style delete confirmation modal — right-click any message or use the multi-select toolbar.

  • Delete for everyone — unsends the message for all participants (only available for your own sent messages, within ~60 hours). Calls DELETE /message/delete/.
  • Delete for me — removes the message from your local view only. Calls DELETE /message/deleteMessage/ (best-effort; always removes locally).
  • Modal auto-dismisses when switching or closing conversations.
  • Escape key closes the modal.
  • Error toast shown if any message in a batch could not be deleted.

RTL / LTR Auto-Direction

Hebrew, Arabic, and other RTL text now renders correctly in every part of the UI. English stays left-to-right. No configuration needed — dir="auto" is applied per element, so mixed conversations work naturally.


Bug Fixes

Security

  • XSS: avatar onerror no longer uses innerHTML with unescaped text
  • XSS: quotedMsg.id sanitised before embedding in onclick attribute
  • XSS: image lightbox uses data-src instead of raw URL in inline handler
  • XSS: group name, subject, and description now escaped with chatEsc()

Crashes

  • chatState.allFetchedMessages was uninitialised — fixed with [] default
  • Location messages crashed on null m.text
  • Location coordinates were not URL-encoded before being put into a Maps URL
  • FileReader base64 split did not guard against a missing comma

API

  • chatApiCall was silently dropping the request body on DELETE calls — Evolution API delete endpoints require a JSON body

Lifecycle

  • Delete modal not dismissed on conversation switch → wrong JID could be used
  • Delete modal not dismissed when closing a conversation
  • chatCloseConversation did not reset select mode state
  • Both confirm functions now guard against activeJid being null

UI / State

  • Select toolbar delete button used a fragile attribute CSS selector; replaced with a stable id
  • Delete button started enabled before first chatUpdateSelectCount call
  • chatCopySelected / chatForwardSelected / chatDeleteSelected use Set.has() instead of Array.includes()

Full Changelog

See CHANGELOG.md for the complete history.

v1.0.1 — Fix scroll-up chat pagination

29 Mar 20:52
50d135c

Choose a tag to compare

What's new in v1.0.1

Bug fixes

  • Scroll-up now loads older messages — Chat history pagination was silently stopping after the first page. The app now correctly fetches additional pages from the Evolution API as you scroll up, with a loading spinner and preserved scroll position.

Technical details

  • Rewrote chatFetchMessages to use the API's page-based response format ({ messages: { total, pages, currentPage, records[] } })
  • Added chatFetchOlderFromApi() that fetches the next API page when local cache is exhausted
  • historyFullyLoaded is now only set when the API confirms no more pages remain
  • Cleaned up verbose debug console.log statements

Full changelog: v1.0.0...v1.0.1

v1.0.0 — WhatsApp Web Chat UI

29 Mar 20:31
650377d

Choose a tag to compare

What's New

WhatsApp Inbox (Chat Feature)

  • Full WhatsApp-style inbox with real-time conversation list, message bubbles, and send/receive
  • Contact name resolution: saved names, push names, and phone number fallback
  • LID/phone JID deduplication — merges duplicate contacts (32+ duplicates eliminated)
  • Group names fetched from authoritative group metadata API with in-memory verified cache
  • Poll message rendering with vote aggregation, progress bars, voter avatars, and View votes detail panel
  • Archive detection with triple API strategy and deep field scanning
  • IndexedDB caching for conversations, contacts, and messages
  • Search, filter (All/Unread/Favorites/Groups/Archived), pin indicators
  • Media messages: send images, videos, documents, audio via drag-and-drop or file picker
  • Reply-to-message support with quoted message preview
  • Message reactions and new chat dialog with contact search

Send History

  • Messages sent via Compose are now tracked in a Send History section under Scheduled Jobs
  • Each entry shows recipients, message previews, success/fail counts
  • Actions: expand details, resend (loads back to Compose), delete individual entries, clear all

Bug Fixes

  • Group names: no longer show last sender name — uses dedicated verified cache from group metadata API
  • Scheduled messages from Inbox: now saves correct phone number/group JID instead of internal database ID
  • Recipient resolution: new chatResolveApiNumber() correctly handles groups, phones, LID, and DB internal IDs
  • Poll votes: pollUpdateMessage no longer filtered as noise; vote aggregation tracks per-voter last-vote-wins
  • Archive false positives: stopped marking all chats as archived when API filter returns same data as normal endpoint
  • IndexedDB cache poisoning: v5 one-time cleanup wipes contaminated group names from previous bugs

UX Improvements

  • Inbox is now the default tab on page load
  • Compose message queue with Text, Media, Voice, Poll, and Buttons message types
  • Schedule panel for both Compose and Group broadcast
  • Multi-recipient chip input with paste support

v0.1.6

18 Mar 17:43

Choose a tag to compare

What's Changed

  • fix: Remove duplicate Invite Link / Leave Group blocks from Settings tab
  • fix: Group search "Select All" now only selects filtered groups & count updates on filter
  • fix: Make config modal scrollable on small viewports
  • chore: Replace personal placeholders with generic examples

Full Changelog: v0.1.5...v0.1.6

v0.1.5 — Group Bulk Management & Single-Group Panel

17 Mar 09:18

Choose a tag to compare

What's New

🗂️ Group Bulk Actions (Manage tab)

Apply changes to multiple groups at once:

  • Set group picture (URL or file upload)
  • Update group name & description
  • Toggle group settings (send messages, edit info, add members)
  • Set disappearing messages timer

🔍 Context-Aware Single-Group Panel

When exactly 1 group is selected, a dedicated panel automatically appears with:

  • Participants list & management
  • Invite link (generate, revoke, copy)
  • Leave Group

🔗 Seamless Browse ↔ Manage Navigation

  • Gear icon in Browse & Send pre-selects that group in the Manage tab
  • "Manage Selected Groups" button passes your current selection directly to Manage

🐛 Fixes

  • Corrected Evolution API v2 group update route names
  • Moved groupJid from query param to request body (API compliance)
  • Scheduled jobs: clicking card body now toggles the details panel
  • Scheduled jobs: uniform button widths
  • Group list max-height increased to 60vh

📜 Full Version History

v0.1.4 — Scheduled Tab Enhancements

  • Full job lifecycle: resend, edit, duplicate, restore, cancel
  • Uniform button widths across all job cards
  • Card body click toggles details/preview panel
  • README updated with Scheduled Sending docs

v0.1.3 — Scheduled Send

  • Schedule any Compose or Group Broadcast job to send at a future date/time
  • Jobs stored in IndexedDB — survive page refresh, handle large payloads
  • Scheduler polls every 30 seconds; jobs execute in order
  • Response panel hidden on non-API tabs (Scheduled, Settings)

v0.1.2 — Group Broadcast Queue Builder

  • Broadcast a message queue to multiple groups at once
  • Phone number: manual country code input in Settings
  • Accept numeric dial prefix (e.g. 972, 44) in addition to ISO codes

v0.1.1 — Message Queue Builder

  • Build a sequence of mixed-type messages in the Compose tab before sending
  • Configurable random delay between messages
  • Default text card pre-loaded on page open

v0.1.0 — Compose Tab

  • New Compose tab: send multiple message types to multiple recipients in one go
  • Chip-based recipient input with E.164 phone normalization

v0.0.9 — File Upload

  • File upload support for Media and Audio message types (in addition to URL input)

v0.0.8 — Server Config

  • config.json support for server deployments — pre-configure all settings centrally
  • Users on hosted deployments no longer need to touch the Settings panel

v0.0.7 — App Name & README

  • Configurable app/business name shown in the header
  • README added for public sharing

v0.0.6 — Initial Release

  • First public version of WhatsApp Manager UI
  • Built on Evolution API v2 — no install, no Node.js, single index.html
  • Tabs: Text, Media, Audio, Location, Contact, Reaction, Poll, Buttons, List, Status
  • Settings panel with server URL, instance name, API key, and country code

v0.1.4 — Scheduled Tab Enhancements

17 Mar 09:26

Choose a tag to compare

What's New

🔁 Full Scheduled Job Lifecycle

  • Resend — clone a completed or cancelled job with a new send time
  • Edit — cancel a pending job and reload it into the tab for full editing
  • Duplicate — copy a job as a new draft with schedule cleared
  • Restore — re-activate a cancelled job (only if scheduled time hasn't passed)
  • Cancel — cancel a pending job without editing

🎨 UX Improvements

  • Uniform button widths across all job cards
  • Clicking card body toggles the details/preview panel
  • Inline message preview (icon + truncated content) collapsed by default

📖 Documentation

  • README updated with full Scheduled Sending section and job action reference table

v0.1.3 — Scheduled Send

17 Mar 09:26

Choose a tag to compare

What's New

⏰ Scheduled Sending

  • Schedule any Compose or Group Broadcast job to send at a future date/time
  • Jobs stored in IndexedDB — survive page refresh and handle large payloads
  • Scheduler polls every 30 seconds and executes jobs in order
  • Response panel hidden on non-API tabs (Scheduled, Settings) for a cleaner UI

🐛 Fixes

  • Reset scroll position to top when switching tabs
  • Fixed missing closing </div> that broke scroll container layout
  • Forced tab panel visibility to fix intermittent display issues

v0.1.2 — Group Broadcast Queue Builder

17 Mar 09:25

Choose a tag to compare

What's New

📣 Group Broadcast Queue Builder

  • Select one or more groups and broadcast a message queue to all of them
  • Same queue builder from Compose tab — supports all message types
  • Messages sent with randomized delay between each group

📞 Phone Number Improvements

  • Allow manual country code input in Settings (text field)
  • Accept numeric dial prefix (e.g. 972, 44) in addition to ISO country codes

v0.1.1 — Message Queue Builder

17 Mar 09:25

Choose a tag to compare

What's New

📋 Message Queue Builder (Compose tab)

  • Build a sequence of multiple messages before sending
  • Each card in the queue can be a different message type (text, media, audio, location, contact, etc.)
  • Queue is sent in order with the configured random delay between messages
  • Add, remove, and reorder cards before dispatching
  • Default text message card pre-loaded on page open