Balao de chamada no icone: o “Titulo de boas-vindas” passa a ser o texto de
um balao que aparece junto ao icone do chat para chamar a atencao do
visitante (aparece apos alguns segundos, dispensavel, abre o chat ao clicar).
A “Mensagem de boas-vindas” passa a ser a primeira mensagem dentro do chat e
o campo aceita varias linhas (multi-linha).
3.6.12
Lead capture: the name-extraction fallback used to require a
capitalised first letter (“Thiago Vaz” yes, “thiago vaz” no), so
any visitor who self-introduced in lowercase ended up with their
name lost. The token regex now accepts mixed case and the saved
value is normalised to Title Case before persisting.
Lead capture: extended the column allow-list (name, email,
phone, company) to also accept the Portuguese equivalents
(nome, telefone, telemovel, tel, empresa). Without this,
an agent created with a phone field labeled “telefone” (which
sanitize_dynamic_list slugifies into key=”telefone”) wrote the
visitor’s phone number into the lead_data JSON blob instead of
the dedicated column, so the admin UI displayed “Lead: email”
with no phone visible.
3.6.11
Admin conversations viewer no longer yanks the scrollbar around on
every 2-second poll. The messages panel now preserves the admin’s
scroll position when they have scrolled away from the most recent
message, and only auto-pins to the bottom when they were already
at the bottom (within 60px). The conversation list on the left
also keeps its scroll position across the 10-second list refresh
instead of resetting to the top.
3.6.10
Live-chat handoff: the conversations table gains a new column
handoff_owner_device_id (VARCHAR(64), nullable). When the optional
Pro addon’s mobile app takes over a conversation, it stamps the
acting device’s UUID here so other mobile devices know to lock the
conversation UI. Adding the column lifts the DB schema version
to 3.1 — dbDelta runs on the next admin load.
Live-chat handoff: when a visitor sends a message while
handoff_active=1, the API handler now fires a new
handoff_visitor_message event on global_ai_chat_notify. The Pro
addon’s push relay routes this event to the single owning device
(no fan-out), so the human attendant gets a direct push without
spamming every other paired phone.
3.6.9
Lead capture safety-net now also notifies. When the LLM forgets to
call save_lead_info and the visitor’s message has an email/phone,
the safety net in class-api-handler.php was persisting the lead
silently — it now also fires the global_ai_chat_notify action so
push, email and webhook integrations on the Pro side hear about
these captures (previously only AI-tool-call captures triggered
notifications).
Agents admin: the Leads tab now delegates extra-field collection to
add-ons via the growthai:collect-agent-fields event. The previous
Save handler only persisted lead_enabled + lead_fields, silently
dropping every extra Pro field rendered in that tab (push triggers,
email summary toggle/recipient/triggers).
3.6.8
Lead notifications: the lead_info_collected action now also fires
the first time a conversation captures any lead field (not only when
every required field is filled). This lets the optional Pro mobile
app / webhooks notify the admin as soon as a visitor becomes
identifiable, even when the agent’s lead_fields list demands more
keys than the visitor has provided so far. Strict completion still
fires the action as before.
3.6.7
Internationalization: the admin and widget UI is now translatable, with bundled translations for English (en_US), Spanish (es_ES) and European Portuguese (pt_PT). Added load_plugin_textdomain() so the shipped /languages files load, and a global-ai-chat.pot template for further translations.
3.6.6
Plugin Check pass: Tested up to bumped to 7.0, and the legacy-table migration in includes/class-agent.php now interpolates {$wpdb->prefix}growthai_agents directly into the query string (the trusted $wpdb->prefix property concatenated with a hardcoded suffix) instead of going through an intermediate variable that the Plugin Check static analyser flagged.
3.6.5
Security/escaping pass. The [growthai_chat] shortcode now builds its wrapper attributes through a strict allow-list (third-party filters must return an associative array of data-* names; values are escaped with esc_attr()) and its return value is wrapped with wp_kses_post() before output. Every builder render callback (Gutenberg block, WPBakery element, Elementor widget, Divi/Beaver modules) runs its do_shortcode() return value through wp_kses_post(). WPBakery/Divi do_action(‘global_ai_chat_shortcode_disabled’) capture buffers are also passed through wp_kses_post() before return.
3.6.4
Free is now a single-agent plugin — the growthai_agents table, multi-agent CRUD APIs (create, delete, duplicate, count, max_allowed, can_create), the agent_id=new admin flow and the agent-id REST routing have all been removed. The agent configuration lives in wp_options[‘growthai_agent’].
Page-builder integrations (Gutenberg, Elementor, Divi, Beaver Builder, WPBakery) and the [growthai_chat] shortcode no longer expose an “agent” parameter — there is only one agent to render.
New resolve filters (global_ai_chat_resolve_agent_by_id, _by_slug, _all_agents, pre_update_agent, resolve_request_agent) let an external add-on (sold separately, not hosted here) layer a multi-agent system on top without Free needing any knowledge of it.
Upgrade path: on first load, the first row of any legacy growthai_agents table is copied into the new wp_option so previously-configured installs keep their settings; the table itself is left untouched.
3.6.3
Removed every code path in the free plugin that branched on whether the optional add-on was installed: deleted GrowthAI_Extensions::is_pro_active(), plan(), plan_name(); dropped the related filters; collapsed if (is_pro_active()) { … } blocks in admin/agents/api code so a single, unconditional path renders.
Renamed the global_ai_chat_render_license_panel hook to the neutral global_ai_chat_render_above_api_key; the promotional banner is now controlled by the standalone global_ai_chat_show_pro_banner filter that defaults to true.
Model dropdown decoration moved to global_ai_chat_model_dropdown_label so extensions can append price multipliers without touching plugin code.
Submenu highlight is now filterable through global_ai_chat_agent_submenu_highlight instead of branching on add-on presence.
3.6.2
Trialware cleanup: removed all Pro-only marketplace JS that previously shipped in the free plugin (plan-comparison table, “Adquirir” buttons, license activation, content sync, prompt generator wizard, platform-key toggle, webhook test, Google Calendar disconnect).
Stripped Pro-only branches from admin/js/admin-script.js (from 1130 to 330 lines) and admin/js/agents.js; Pro now injects its own JS for the features it ships.
Removed dead Pro UI strings (Atendimento ativo badge, license-tab callouts, platform-quota notices) from class-admin-settings.php and admin/js/conversations.js.
Document upload now uses the built-in Free vector store class (GrowthAI_Vector_Store_Free) which calls api.openai.com directly with the customer’s key — no Pro addon required.
3.6.1
Security: knowledge-base uploads now validated server-side via wp_check_filetype_and_ext and is_uploaded_file; preset icon paths sanitised against traversal and run through wp_kses before output.
wp.org compliance: removed all remaining Pro placeholder strings, sales CTAs, and license-tab links from builder integrations (Gutenberg, Elementor, Divi, Beaver Builder, WPBakery).
i18n: every admin and visitor-facing string now uses the global-ai-chat text domain.
Admin: outdated-content notice gated behind content_sync Pro feature so Free skips the query entirely; tab redirects whitelisted; brand strings renamed to “Global AI Chat”.
Cleanup: removed orphan class-smtp.php, analytics.js, meta-box.js; widget footer simplified to passive Powered by Global AI Chat attribution.
3.6.0
External services: free plugin now only contacts api.openai.com. All optional SaaS endpoints moved to the Pro addon.
Knowledge base: built-in vector store handler in Free — uploads documents directly to OpenAI with your own key, no proxy.
Security: preset chat icons are now path-sanitised and run through wp_kses before rendering; visitor session tokens use window.crypto.getRandomValues (Math.random fallback only on legacy browsers).
Admin: removed all “(Pro)” placeholder options, sales upsell sidebars, account-registration card, prompt marketplace and ads endpoint. One info-only Pro banner remains on the Geral tab.
i18n: all admin and visitor-facing strings wrapped in translation functions (global-ai-chat text domain).
Domain Path: /languages header added.
3.5.0
GDPR cookies tab: full catalog of cookies/localStorage entries listed in admin and shown to visitors before any data is written.
Anti-hallucination grounding rule baked into every system prompt.
Server-side name regex fallback when the AI omits the lead name in a tool call.
3.4.0
Renamed plugin to “Global AI Chat” (slug: global-ai-chat).
Free plugin works entirely without a license — chat calls OpenAI directly with your key.
Single-agent admin in Free. Multi-agent management, live chat handoff, Google Calendar booking, outbound webhooks, page/post auto-sync, AI prompt generator, mobile app, managed tokens, auto-updates and analytics all ship in the separate Pro addon at https://globalai.software/.
Free’s knowledge base now ships only document upload (PDF/DOCX/TXT). Page/post auto-sync moved to Pro.
New extension-point API (GrowthAI_Extensions) lets Pro hook cleanly into Free.
New Geral tab with OpenAI API key management + opt-in uninstall data deletion toggle.
sanitize_api_key preserves raw bytes instead of applying sanitize_text_field (would strip valid key characters).
3.3.x
Typing indicator across plugin web, widget, and mobile app; scroll-to-bottom on open; non-destructive “switch agent” button in multi-agent widget; license rotation + refresh token rotation on the mobile app; nonce + rate-limit on public-facing ajax endpoints.
3.0.0
Multi-agent: each agent has its own prompt, docs, lead fields and triggers.