{"id":367349,"date":"2026-10-11T03:13:19","date_gmt":"2026-10-11T03:13:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/soltacia-live-chat\/"},"modified":"2026-10-11T03:13:02","modified_gmt":"2026-10-11T03:13:02","slug":"soltacia-live-chat","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/soltacia-live-chat\/","author":23563408,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.0.63","stable_tag":"1.0.63","tested":"7.1.3","requires":"6.2","requires_php":"8.0","requires_plugins":null,"header_name":"Soltacia Live Chat","header_author":"Soltacia","header_description":"Self-hosted live chat for WordPress with visitor messaging, operator inbox, responses, notifications, transcripts, and retention controls.","assets_banners_color":"35445d","last_updated":"2026-10-11 03:13:02","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"https:\/\/soltacia.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":34,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description"],"tags":{"1.0.63":{"tag":"1.0.63","author":"soltacia","date":"2026-10-11 03:13:02","revision":3738865}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3738878,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3738878,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3738878,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3738878,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.0.63"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3738878,"resolution":"1","location":"assets","locale":"","width":1920,"height":1032},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3738878,"resolution":"2","location":"assets","locale":"","width":1920,"height":1032}},"screenshots":[]},"plugin_section":[],"plugin_tags":[5707,4040,2379,1104],"plugin_category":[41],"plugin_contributors":[285648],"plugin_business_model":[],"class_list":["post-367349","plugin","type-plugin","status-publish","hentry","plugin_tags-chat","plugin_tags-inbox","plugin_tags-live-chat","plugin_tags-support","plugin_category-communication","plugin_contributors-soltacia","plugin_committers-soltacia"],"banners":{"banner":"https:\/\/ps.w.org\/soltacia-live-chat\/assets\/banner-772x250.png?rev=3738878","banner_2x":"https:\/\/ps.w.org\/soltacia-live-chat\/assets\/banner-1544x500.png?rev=3738878","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/soltacia-live-chat\/assets\/icon-128x128.png?rev=3738878","icon_2x":"https:\/\/ps.w.org\/soltacia-live-chat\/assets\/icon-256x256.png?rev=3738878","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/soltacia-live-chat\/assets\/screenshot-1.png?rev=3738878","caption":""},{"src":"https:\/\/ps.w.org\/soltacia-live-chat\/assets\/screenshot-2.png?rev=3738878","caption":""}],"raw_content":"<!--section=description-->\n<p>A simple self-hosted live chat widget for WordPress.<\/p>\n\n<h3>How it works<\/h3>\n\n<ul>\n<li>Visitors click the floating chat button and send messages.<\/li>\n<li>In wp-admin, go to \"Soltacia Live Chat\" to reply in the inbox.<\/li>\n<\/ul>\n\n<h3>Notes<\/h3>\n\n<p>This is a polling-based chat (AJAX\/REST). If you need true real-time with many agents, add WebSockets (Phase 2).<\/p>\n\n<h3>1.7.33<\/h3>\n\n<ul>\n<li>Hotfix: remove early rewrite-rule registration that could fatal on some hosts.<\/li>\n<li>Serve the service worker from the site root via a query param (no custom rewrite rules needed).<\/li>\n<li>Fix PHP string concatenation in service worker output (prevents \"critical error\" when opening the SW URL).<\/li>\n<\/ul>\n\n<h3>1.7.32<\/h3>\n\n<ul>\n<li>Fix Web Push service worker delivery: use root endpoint \/soltacia-chat-sw.js to avoid CDN\/WAF blocking plugin asset JS.<\/li>\n<li>On update, auto-flush rewrite rules once to ensure the SW endpoint works without manual permalinks save.<\/li>\n<\/ul>\n\n<h3>1.1.0<\/h3>\n\n<ul>\n<li>Added admin email notifications (throttled)<\/li>\n<li>Added Close\/Reopen conversation controls in admin inbox<\/li>\n<\/ul>\n\n<h3>1.2.0<\/h3>\n\n<ul>\n<li>Added near real-time admin updates via Server-Sent Events (push stream)<\/li>\n<li>Added desktop notifications + sound for new visitor messages (opt-in)<\/li>\n<\/ul>\n\n<h3>1.7.21<\/h3>\n\n<h3>1.7.22<\/h3>\n\n<ul>\n<li>Front-end: configurable floating chat button label (Settings)<\/li>\n<li>Front-end: added theme palettes for the button + widget window (Settings)<\/li>\n<\/ul>\n\n<h3>1.7.25<\/h3>\n\n<ul>\n<li>Widget header layout option (logo left vs centered) and option to hide title when logo is present.<\/li>\n<li>Operator inbox: search conversations by last message text or date.<\/li>\n<li>Operator inbox: mark conversation unread\/read toggle.<\/li>\n<li>Alerts: optional \"Only when tab not focused\" behavior for sound + desktop notifications.<\/li>\n<\/ul>\n\n<h3>1.7.24<\/h3>\n\n<ul>\n<li>Widget branding: configurable header logo (media upload) and optional Support Hours line under the title<\/li>\n<li>Settings screen: added Support Hours + Header Logo controls<\/li>\n<li>Front-end widget header now renders logo + support hours when set<\/li>\n<\/ul>\n\n<h3>1.3.0<\/h3>\n\n<ul>\n<li>Added Web Push notifications (no-payload) using VAPID<\/li>\n<li>Added device subscription management in Settings<\/li>\n<li>Added root-served service worker via \/soltacia-chat-sw.js<\/li>\n<\/ul>\n\n<h3>1.3.1<\/h3>\n\n<ul>\n<li>Notification click now opens the newest unread conversation (focus=unread)<\/li>\n<li>Admin title '(New)' badge clears when conversations are read<\/li>\n<\/ul>\n\n<h3>1.4.0<\/h3>\n\n<ul>\n<li>Added encrypted Web Push payloads (preview + cid deep-link)<\/li>\n<li>Notification click opens the exact conversation<\/li>\n<\/ul>\n\n<h3>1.4.1<\/h3>\n\n<ul>\n<li>PHP 8 compatibility hardening: encrypted payload previews auto-fallback on PHP 8.0 (works without previews)<\/li>\n<li>Added Settings status indicator for payload preview support<\/li>\n<\/ul>\n\n<h3>1.5.0<\/h3>\n\n<ul>\n<li>Added PHP 8.0 push payload preview support when GMP is available (no need for openssl_pkey_derive)<\/li>\n<li>Auto-fallback remains for hosts without GMP or openssl_pkey_derive<\/li>\n<\/ul>\n\n<h3>1.6.0<\/h3>\n\n<ul>\n<li>Added Diagnostics screen (HTTPS, SW URL, VAPID, PHP\/OpenSSL capability)<\/li>\n<li>Added Test Push button (per-user subscriptions)<\/li>\n<li>Fixed admin localization for push (sw_url, vapid_public)<\/li>\n<\/ul>\n\n<h3>1.6.1<\/h3>\n\n<ul>\n<li>Added Service Worker check (inline fetch + content-type\/snippet)<\/li>\n<li>Added Push subscription stats (total + per-user counts)<\/li>\n<\/ul>\n\n<h3>1.6.2<\/h3>\n\n<ul>\n<li>Added Push Log table + viewer (last 50 sends)<\/li>\n<li>Added log clear button<\/li>\n<li>Branded plugin metadata for Soltacia.com<\/li>\n<\/ul>\n\n<h3>1.6.3<\/h3>\n\n<ul>\n<li>Fixed PHP parse error in SSE stream output (escaped JSON quotes)<\/li>\n<\/ul>\n\n<h3>1.6.4<\/h3>\n\n<ul>\n<li>Fix fatal error: removed duplicate b64url_json() method in push class<\/li>\n<\/ul>\n\n<h3>1.6.5<\/h3>\n\n<ul>\n<li>Fix PHP parse error in GMP ECDH helper (removed malformed duplicate Z3 assignment)<\/li>\n<\/ul>\n\n<h3>1.6.6<\/h3>\n\n<ul>\n<li>Fix PHP parse error in GMP ECDH helper: rewrote Z3 computation into safe two-line form<\/li>\n<\/ul>\n\n<h3>1.6.7<\/h3>\n\n<ul>\n<li>Fix fatal: added missing Soltacia_Chat_Admin::render_diagnostics() method<\/li>\n<\/ul>\n\n<h3>1.6.8<\/h3>\n\n<ul>\n<li>UI fix: chat composer bar now uses proper flex layout (textarea + send button aligned)<\/li>\n<\/ul>\n\n<h3>1.7.20<\/h3>\n\n<ul>\n<li>Admin: Desktop alerts button now toggles label Enable\/Disable based on state<\/li>\n<li>Visitor: Closed chats can no longer receive new visitor messages (prevents closed threads resurfacing)<\/li>\n<li>Visitor: Widget resumes the last conversation id on this device and prompts a new chat if closed<\/li>\n<\/ul>\n\n<h3>1.6.9<\/h3>\n\n<ul>\n<li>Fix messages not saving: corrected wpdb-&gt;insert() format arrays for message inserts (visitor\/admin\/system)<\/li>\n<li>Fix widget bottom cut-off: convert panel layout to flex column (header\/body\/compose)<\/li>\n<\/ul>\n\n<h3>1.7.0<\/h3>\n\n<ul>\n<li>Front-end UX fix: Send now auto-starts a chat if user hasn't clicked Start chat yet<\/li>\n<\/ul>\n\n<h3>1.7.12<\/h3>\n\n<ul>\n<li>Gold rebuild from v1.7.0 with audited JS\/PHP (PHP 8 compatible)<\/li>\n<li>Widget mount is rendered safely (no duplicates) and can be created by JS if missing<\/li>\n<li>Front-end send UX improved (instant feedback, fewer silent failures)<\/li>\n<li>CSS hardened so compose area never floats outside the widget<\/li>\n<\/ul>\n\n<h3>1.7.19<\/h3>\n\n<ul>\n<li>Admin inbox: improved alerts\/status readability (wrap-safe chips; no overflow into the thread pane)<\/li>\n<li>Admin inbox: added per-device mute\/unmute button for notification sound<\/li>\n<li>Admin inbox: removed Delete button (Close\/Reopen is the workflow)<\/li>\n<\/ul>\n\n<h3>1.7.18<\/h3>\n\n<ul>\n<li>Admin inbox: fixed \u201cEnable desktop alerts\u201d button (now requests permission + enables alerts)<\/li>\n<li>Admin inbox: added notification sound for new visitor messages<\/li>\n<li>Admin inbox: restored SSE stream client (startStream) so new messages update live across all conversations<\/li>\n<li>Admin inbox: notifications only auto-mark read when the tab is focused<\/li>\n<\/ul>\n\n<h3>1.7.28<\/h3>\n\n<ul>\n<li>Offline mode + lead capture: support schedule, offline message, optional require-email when offline<\/li>\n<li>Operator presence + SLA: operator mode toggle, admin activity ping, auto-away, \u201cTypically replies in X min\u201d<\/li>\n<li>Transcripts + exports: email transcript (admin + visitor), admin export CSV\/JSON<\/li>\n<li>Hardening + polish: honeypot, message clamps, safe-area + focus-visible styles, transcript button<\/li>\n<\/ul>","raw_excerpt":"A simple self-hosted live chat widget for WordPress.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/367349","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=367349"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/soltacia"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=367349"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=367349"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=367349"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=367349"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=367349"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=367349"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}