Translations: the admin and widget now follow the site language — Portuguese
or Spanish when the site is in those languages, English everywhere else
(instead of always showing Portuguese). The bundled en_US/pt_PT/es_ES
catalogs are loaded explicitly and a locale map picks the right one.
3.6.16
Agents admin: the Configuracao tab now delegates extra-field collection
to add-ons via the growthai:collect-agent-fields event (the same pattern the
Leads tab already uses), so optional fields contributed by the separate Pro
addon persist correctly. No behaviour change for the free plugin on its own.
readme: rewrote the description to be clearer and less technical, and added a
Screenshots section.
3.6.15
Fix: o nome do atendente nao aparecia no widget (ficava “Atendente”) porque
o poll de live-chat por admin-ajax nao incluia o campo name. Agora inclui,
e o nome por mensagem aparece tambem no widget do visitante.
3.6.14
Mensagens de humano mostram o NOME do atendente (por mensagem), em vez de um
“Atendente” generico — no widget do visitante e no painel “Conversas”. Cada
mensagem guarda quem a enviou, criando um historico de quem disse o que.
3.6.13
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.