{"id":320485,"date":"2026-06-29T21:59:21","date_gmt":"2026-06-29T21:59:21","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/ozy-ai-agent\/"},"modified":"2026-08-19T18:42:32","modified_gmt":"2026-08-19T18:42:32","slug":"ozy-chat-assistant","status":"publish","type":"plugin","link":"https:\/\/bs.wordpress.org\/plugins\/ozy-chat-assistant\/","author":23508772,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"3.0.1","stable_tag":"3.0.1","tested":"7.1","requires":"5.8","requires_php":"7.4","requires_plugins":null,"header_name":"OZY AI Agent","header_author":"Danish Rangaiz","header_description":"AI-powered chat widget that learns your website and helps visitors. Supports OpenAI, Claude, Groq, Gemini & Mistral. Fully configurable from the dashboard.","assets_banners_color":"3f3f3f","last_updated":"2026-08-19 18:42:32","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/ozysolutions.com","header_author_uri":"https:\/\/idanishrangaiz.vercel.app","rating":0,"author_block_rating":0,"active_installs":0,"downloads":492,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.0.8":{"tag":"2.0.8","author":"idanishrangaiz","date":"2026-08-13 12:02:26"},"3.0.0":{"tag":"3.0.0","author":"idanishrangaiz","date":"2026-08-18 21:12:55"},"3.0.1":{"tag":"3.0.1","author":"idanishrangaiz","date":"2026-08-19 18:42:32"}},"upgrade_notice":{"3.0.0":"<p>Renamed to OZY AI Agent. Adds drag-and-drop elements for Gutenberg, Elementor, Divi, Avada and WPBakery, an inline chat mode, free-text model IDs, full colour control and a new analytics dashboard. Settings are preserved.<\/p>","2.0.0":"<p>Major update. Adds OpenAI and Claude support, website auto-reader, redesigned dashboard, and improved widget modes.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3590650,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3590650,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3653539,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3653539,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"oozzy\/ai-agent":{"name":"oozzy\/ai-agent","title":"OZY AI Agent"}},"tagged_versions":["2.0.8","3.0.0","3.0.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3653539,"resolution":"1","location":"assets","locale":"","width":1440,"height":1809},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3653539,"resolution":"2","location":"assets","locale":"","width":1440,"height":1622},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3653539,"resolution":"3","location":"assets","locale":"","width":1440,"height":2136},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3653539,"resolution":"4","location":"assets","locale":"","width":1440,"height":1386}},"screenshots":{"1":"Dashboard \u2014 setup progress, live conversation stats and a preview of the widget.","2":"AI Provider \u2014 API keys, editable model IDs, connection testing and fallback order.","3":"Widget Settings \u2014 colour presets, every colour editable, with a live preview.","4":"Analytics \u2014 daily volume, provider usage, response times and most-asked questions."}},"plugin_section":[],"plugin_tags":[2353,232494,1320,14160,2364],"plugin_category":[],"plugin_contributors":[269519],"plugin_business_model":[],"class_list":["post-320485","plugin","type-plugin","status-publish","hentry","plugin_tags-ai","plugin_tags-ai-agent","plugin_tags-assistant","plugin_tags-chat-widget","plugin_tags-chatbot","plugin_contributors-idanishrangaiz","plugin_committers-idanishrangaiz"],"banners":{"banner":"https:\/\/ps.w.org\/ozy-chat-assistant\/assets\/banner-772x250.png?rev=3653539","banner_2x":"https:\/\/ps.w.org\/ozy-chat-assistant\/assets\/banner-1544x500.png?rev=3653539","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/ozy-chat-assistant\/assets\/icon-128x128.png?rev=3590650","icon_2x":"https:\/\/ps.w.org\/ozy-chat-assistant\/assets\/icon-256x256.png?rev=3590650","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/ozy-chat-assistant\/assets\/screenshot-1.png?rev=3653539","caption":"Dashboard \u2014 setup progress, live conversation stats and a preview of the widget."},{"src":"https:\/\/ps.w.org\/ozy-chat-assistant\/assets\/screenshot-2.png?rev=3653539","caption":"AI Provider \u2014 API keys, editable model IDs, connection testing and fallback order."},{"src":"https:\/\/ps.w.org\/ozy-chat-assistant\/assets\/screenshot-3.png?rev=3653539","caption":"Widget Settings \u2014 colour presets, every colour editable, with a live preview."},{"src":"https:\/\/ps.w.org\/ozy-chat-assistant\/assets\/screenshot-4.png?rev=3653539","caption":"Analytics \u2014 daily volume, provider usage, response times and most-asked questions."}],"raw_content":"<!--section=description-->\n<p><strong>OZY AI Agent<\/strong> (formerly <em>OZY Chat Assistant<\/em>) puts a smart AI agent and chatbot on your WordPress site. It automatically reads your pages, posts, products, and menus \u2014 then behaves as the dedicated AI agent for your business. Visitors get accurate, context-aware answers about your services without you lifting a finger.<\/p>\n\n<p>Drop it anywhere with a drag-and-drop block for Gutenberg, Elementor, Divi, Avada and WPBakery, keep the floating chat widget in the corner, or do both.<\/p>\n\n<h4>Why OZY AI Agent is different<\/h4>\n\n<p>Most AI chat plugins require expensive SaaS subscriptions or are locked to one AI provider. OZY AI Agent:<\/p>\n\n<ul>\n<li><strong>Learns your website automatically<\/strong> \u2014 scans your WordPress content and uses it to answer visitor questions accurately<\/li>\n<li><strong>Supports 5 AI providers<\/strong> \u2014 OpenAI, Claude, Groq, Gemini, Mistral \u2014 with configurable priority and automatic fallback<\/li>\n<li><strong>Model IDs are free text<\/strong> \u2014 when a provider ships a new model, type its ID and use it the same day; no plugin update needed<\/li>\n<li><strong>Free tiers available<\/strong> \u2014 Groq, Gemini, and Mistral all offer free API keys<\/li>\n<li><strong>Drag and drop anywhere<\/strong> \u2014 a native element for Gutenberg, Elementor, Divi, Avada (Fusion), WPBakery, and classic widget areas<\/li>\n<li><strong>Everything from the dashboard<\/strong> \u2014 colours, agent identity, placement, limits and analytics, no code required<\/li>\n<\/ul>\n\n<h4>Core Features<\/h4>\n\n<ul>\n<li><strong>Multi-provider AI<\/strong> \u2014 OpenAI, Claude, Groq, Gemini and Mistral, each with its own editable model ID<\/li>\n<li><strong>Configurable priority<\/strong> \u2014 choose which provider is tried first and in what fallback order<\/li>\n<li><strong>Connection tester<\/strong> \u2014 verify any API key from the dashboard and see the provider's own error message if it fails<\/li>\n<li><strong>Website content reader<\/strong> \u2014 indexes your WordPress pages, posts, products, and menus, and lists exactly what was indexed<\/li>\n<li><strong>Business knowledge base<\/strong> \u2014 add custom descriptions, services, FAQs, and policies<\/li>\n<li><strong>Analytics dashboard<\/strong> \u2014 conversation totals, daily and monthly counts, average response time, success rate, provider usage and most-asked questions<\/li>\n<li><strong>Rate limiting<\/strong> \u2014 per-visitor requests per minute plus optional daily and monthly caps for the whole site<\/li>\n<li><strong>Three placement modes<\/strong> \u2014 inline chat panel, a button that opens the popup, or a loader for the floating widget<\/li>\n<li><strong>Page builder elements<\/strong> \u2014 Gutenberg block, Elementor widget, Divi module, Fusion\/Avada element, WPBakery element, classic sidebar widget<\/li>\n<li><strong>Full colour control<\/strong> \u2014 accent, panel background, text, visitor bubble and launcher colours, plus corner radius and screen offsets, with a live preview<\/li>\n<li><strong>Light and dark base themes<\/strong><\/li>\n<li><strong>Agent icon uploader<\/strong> \u2014 pick an image from the media library, or leave it blank for the animated OZY orbit icon<\/li>\n<li><strong>Quick questions<\/strong> \u2014 tappable suggestion chips shown before the first message<\/li>\n<li><strong>Streaming responses<\/strong> \u2014 words appear in real time<\/li>\n<li><strong>Voice input<\/strong> \u2014 Groq Whisper transcribes voice messages<\/li>\n<li><strong>Text-to-speech<\/strong> \u2014 the agent reads replies aloud after voice input<\/li>\n<li><strong>Floating launcher + popup modal<\/strong> \u2014 each independently togglable, with an optional launcher label<\/li>\n<li><strong>Time-aware greeting<\/strong> \u2014 greets visitors based on their local time<\/li>\n<li><strong>Re-engagement<\/strong> \u2014 prompts idle visitors after 50 seconds<\/li>\n<li><strong>Chat history<\/strong> \u2014 persists the last 30 messages across page loads<\/li>\n<li><strong>Lightweight<\/strong> \u2014 no jQuery dependency on the front end, vanilla JS, minimal CSS<\/li>\n<\/ul>\n\n<h4>Setup in 5 Minutes<\/h4>\n\n<ol>\n<li>Install and activate the plugin<\/li>\n<li>Go to <strong>OZY AI Agent \u2192 AI Provider<\/strong> and add at least one API key (Groq is free and recommended), plus the model ID you want<\/li>\n<li>Describe your business in <strong>AI Agent<\/strong><\/li>\n<li>Run the scan in <strong>URL Index<\/strong><\/li>\n<li>Pick your colours and placement in <strong>Widget Settings<\/strong><\/li>\n<\/ol>\n\n<h4>Free API Keys<\/h4>\n\n<ul>\n<li><strong>Groq<\/strong> \u2014 https:\/\/console.groq.com (free, fast, recommended)<\/li>\n<li><strong>Gemini<\/strong> \u2014 https:\/\/aistudio.google.com (free tier)<\/li>\n<li><strong>Mistral<\/strong> \u2014 https:\/\/console.mistral.ai (free tier)<\/li>\n<li><strong>OpenAI<\/strong> \u2014 https:\/\/platform.openai.com\/api-keys (paid)<\/li>\n<li><strong>Claude<\/strong> \u2014 https:\/\/console.anthropic.com (paid)<\/li>\n<\/ul>\n\n<h4>Placing the agent<\/h4>\n\n<p>Search for <strong>OZY AI Agent<\/strong> in Gutenberg, Elementor, Divi, Avada\/Fusion, WPBakery, or the Widgets screen. Every element offers the same three modes and renders identical markup, so the design matches everywhere.<\/p>\n\n<h4>Shortcode<\/h4>\n\n<pre><code>[oozzy_ai_agent] \u2014 inline chat panel\n[oozzy_ai_agent mode=\"button\" label=\"Chat with us\"] \u2014 button that opens the popup\n[oozzy_ai_agent mode=\"loader\"] \u2014 load the floating widget on this page only\n<\/code><\/pre>\n\n<p>Attributes: <code>mode<\/code>, <code>height<\/code>, <code>title<\/code>, <code>label<\/code>, <code>quick<\/code> (questions separated by <code>|<\/code>).<\/p>\n\n<p>Or enable <strong>Load on every page<\/strong> in Widget Settings to show the floating launcher site-wide without a shortcode.<\/p>\n\n<h3>External Services<\/h3>\n\n<p>This plugin connects to third-party AI services to generate chat responses. The plugin only contacts a provider if you have entered an API key for that provider in <strong>OZY AI Agent \u2192 AI Provider<\/strong>. No data is sent to any provider whose key is empty.<\/p>\n\n<p><strong>What is sent<\/strong>: the visitor's chat message text, the prior conversation (up to the last 20 messages from the same browser session), and a system prompt containing your configured business info and a snapshot of public WordPress content (page\/post titles and excerpts) you have configured the plugin to read.<\/p>\n\n<p><strong>When is it sent<\/strong>: every time a visitor submits a message in the chat widget on your site.<\/p>\n\n<p><strong>Providers used<\/strong> (only the ones with configured API keys are called):<\/p>\n\n<ul>\n<li><strong>Groq<\/strong> \u2014 https:\/\/groq.com\/ \u2014 terms: https:\/\/groq.com\/terms-of-use\/ \u2014 privacy: https:\/\/groq.com\/privacy-policy\/<\/li>\n<li><strong>Google Gemini<\/strong> \u2014 https:\/\/ai.google.dev\/ \u2014 terms: https:\/\/ai.google.dev\/gemini-api\/terms \u2014 privacy: https:\/\/policies.google.com\/privacy<\/li>\n<li><strong>Mistral AI<\/strong> \u2014 https:\/\/mistral.ai\/ \u2014 terms: https:\/\/legal.mistral.ai\/terms \u2014 privacy: https:\/\/legal.mistral.ai\/terms\/privacy-policy<\/li>\n<li><strong>OpenAI<\/strong> \u2014 https:\/\/openai.com\/ \u2014 terms: https:\/\/openai.com\/policies\/terms-of-use\/ \u2014 privacy: https:\/\/openai.com\/policies\/privacy-policy\/<\/li>\n<li><strong>Anthropic (Claude)<\/strong> \u2014 https:\/\/www.anthropic.com\/ \u2014 terms: https:\/\/www.anthropic.com\/legal\/consumer-terms \u2014 privacy: https:\/\/www.anthropic.com\/legal\/privacy<\/li>\n<\/ul>\n\n<p><strong>Voice transcription<\/strong> (only if the visitor uses the microphone button and a Groq API key is configured): the audio recording is sent directly to the Groq Whisper API endpoint (https:\/\/api.groq.com\/openai\/v1\/audio\/transcriptions) over an HTTP request. The audio is not stored on your WordPress server.<\/p>\n\n<p>Full chat history is kept only in the visitor's own browser via <code>localStorage<\/code> and is cleared when the visitor clears their browser data. Nothing is sent to the plugin author or to any OZY server.<\/p>\n\n<p><strong>Local analytics<\/strong> (optional, on by default): the plugin records one row per chat request in a table in your own WordPress database \u2014 timestamp, the provider and model that answered, the response time, whether it succeeded, and the visitor's last message truncated to 300 characters. This data never leaves your server, is capped at the most recent 1,000 rows, can be deleted at any time from <strong>Analytics \u2192 Delete all analytics data<\/strong>, and can be switched off entirely under <strong>URL Index \u2192 Record conversation analytics<\/strong>. Uninstalling the plugin drops the table.<\/p>\n\n<p><strong>Site owners are responsible<\/strong> for disclosing this third-party data processing to their visitors in their site's privacy policy.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>ozy-chat-assistant<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin through <strong>Plugins \u2192 Installed Plugins<\/strong><\/li>\n<li>Configure at <strong>OZY AI Agent<\/strong> in the admin sidebar<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"the%20plugin%20used%20to%20be%20called%20ozy%20chat%20assistant%20%E2%80%94%20is%20this%20the%20same%20plugin%3F\"><h3>The plugin used to be called OZY Chat Assistant \u2014 is this the same plugin?<\/h3><\/dt>\n<dd><p>Yes. Version 3.0.0 renamed it to <strong>OZY AI Agent<\/strong>. The directory URL and folder name stay <code>ozy-chat-assistant<\/code> because WordPress.org slugs are permanent, so updates arrive normally and your settings carry over untouched.<\/p><\/dd>\n<dt id=\"which%20page%20builders%20are%20supported%3F\"><h3>Which page builders are supported?<\/h3><\/dt>\n<dd><p>Gutenberg, Elementor, Divi, Avada (Fusion Builder), WPBakery, and classic widget areas each get a native <strong>OZY AI Agent<\/strong> element. They all render the same markup, so the design is identical no matter where you drop it. Any other builder can use the shortcode.<\/p><\/dd>\n<dt id=\"what%20is%20the%20difference%20between%20the%20inline%20chat%20and%20the%20popup%3F\"><h3>What is the difference between the inline chat and the popup?<\/h3><\/dt>\n<dd><p>The inline mode embeds a full chat panel directly in the page flow, so visitors talk to the agent right there without anything opening over the content. The popup and floating launcher are separate and keep working as before.<\/p><\/dd>\n<dt id=\"my%20provider%20released%20a%20new%20model.%20do%20i%20have%20to%20wait%20for%20a%20plugin%20update%3F\"><h3>My provider released a new model. Do I have to wait for a plugin update?<\/h3><\/dt>\n<dd><p>No. Model IDs are plain text fields. Copy the new ID from your provider's model list and paste it in \u2014 it works immediately.<\/p><\/dd>\n<dt id=\"do%20i%20need%20all%20five%20api%20keys%3F\"><h3>Do I need all five API keys?<\/h3><\/dt>\n<dd><p>No. You only need one working API key. The agent tries them in your configured priority order and falls back automatically if one fails. Groq is the recommended starting point \u2014 it's free and fast.<\/p><\/dd>\n<dt id=\"will%20it%20conflict%20with%20my%20theme%20or%20other%20plugins%3F\"><h3>Will it conflict with my theme or other plugins?<\/h3><\/dt>\n<dd><p>The widget uses fixed positioning and scoped CSS custom properties. It does not inject styles into the page flow. Conflicts are very rare.<\/p><\/dd>\n<dt id=\"can%20i%20use%20it%20on%20a%20client%27s%20website%3F\"><h3>Can I use it on a client's website?<\/h3><\/dt>\n<dd><p>Yes. Each installation is independent. Configure the business info, agent name, and contact details for each site separately.<\/p><\/dd>\n<dt id=\"does%20streaming%20work%20on%20shared%20hosting%3F\"><h3>Does streaming work on shared hosting?<\/h3><\/dt>\n<dd><p>Streaming requires <code>ob_flush()<\/code> \/ <code>flush()<\/code> support. This works on most hosts. If streaming fails, the widget automatically falls back to non-streaming mode.<\/p><\/dd>\n<dt id=\"how%20does%20the%20website%20reader%20work%3F\"><h3>How does the website reader work?<\/h3><\/dt>\n<dd><p>The plugin reads your WordPress pages, posts, WooCommerce products, custom post types, and navigation menus using built-in WordPress functions \u2014 no external HTTP requests. The content is cached (default: 6 hours) and injected into the AI's system prompt.<\/p><\/dd>\n<dt id=\"who%20built%20this%20plugin%3F\"><h3>Who built this plugin?<\/h3><\/dt>\n<dd><p>Built and maintained by idanishrangaiz. See the plugin author link in your WordPress plugins page for support and contact details.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>3.0.1<\/h4>\n\n<ul>\n<li>Fixed: the microphone and send buttons could pick up the active theme's button hover colours (Elementor and similar). Their colours are now painted from the plugin's own variables in every state.<\/li>\n<\/ul>\n\n<h4>3.0.0<\/h4>\n\n<ul>\n<li>Renamed: the plugin is now <strong>OZY AI Agent<\/strong>. The directory slug, folder name and text domain remain <code>ozy-chat-assistant<\/code>, so this is a normal update and all settings are preserved.<\/li>\n<li>Added: drag-and-drop elements for Gutenberg, Elementor, Divi, Avada (Fusion Builder), WPBakery and classic widget areas \u2014 all rendering identical markup.<\/li>\n<li>Added: inline chat mode. The agent can now be embedded directly in the page flow instead of only opening as a popup; the popup and floating launcher are unchanged and still independent.<\/li>\n<li>Added: <code>mode<\/code>, <code>height<\/code>, <code>title<\/code>, <code>label<\/code> and <code>quick<\/code> attributes on the <code>[oozzy_ai_agent]<\/code> shortcode.<\/li>\n<li>Changed: model selection is now a free-text field for every provider instead of a fixed dropdown, so new model releases work without waiting for a plugin update. Keys and model IDs sit together on one screen.<\/li>\n<li>Added: multi-screen dashboard \u2014 Dashboard, AI Provider, AI Agent, Widget Settings, URL Index, Analytics and Help &amp; Setup \u2014 with a redesigned interface and a new sidebar icon.<\/li>\n<li>Added: Analytics screen with total, daily and monthly conversation counts, average response time, success rate, per-provider usage, a 14-day chart, most-asked questions and recent conversations. All data is stored locally and can be deleted or switched off.<\/li>\n<li>Added: connection tester for each provider that surfaces the provider's own error message.<\/li>\n<li>Added: rate limiting controls \u2014 requests per minute per visitor, plus optional daily and monthly caps for the whole site.<\/li>\n<li>Added: media-library uploader for the agent icon, replacing the URL-only field (pasting a URL still works).<\/li>\n<li>Added: full colour control \u2014 accent, panel background, text, visitor bubble and launcher colours, corner radius, screen offsets, light\/dark base theme and six presets, with a live preview that updates as you edit.<\/li>\n<li>Added: URL Index screen listing exactly what was indexed, with per-entry source links and character counts.<\/li>\n<li>Added: quick-question chips, a custom welcome message, an agent role subtitle, an optional launcher label, and a hide-on-mobile option.<\/li>\n<li>Added: max reply length and creativity controls.<\/li>\n<li>Improved: streaming now reports which provider answered, and failed requests surface the provider's HTTP error in the log.<\/li>\n<li>Improved: the front-end widget markup and stylesheet were rebuilt so the panel, popup and inline embed share one design system.<\/li>\n<li>Removed: the automatic visibility \"repair\" routine, which prevented administrators from turning every display mode off on purpose.<\/li>\n<\/ul>\n\n<h4>2.0.8<\/h4>\n\n<ul>\n<li>Fixed: the \"Powered by OZY\" credit no longer appears on the front-end chat widget by default. As required by the WordPress.org plugin guidelines, attribution on user-facing interfaces is now strictly opt-in.<\/li>\n<li>Added: a \"Show 'Powered by OZY' Credit\" toggle (off by default) in the Appearance tab. Site administrators must intentionally enable it for the credit to display.<\/li>\n<\/ul>\n\n<h4>2.0.7<\/h4>\n\n<ul>\n<li>Changed: renamed the plugin to \"OZY Chat Assistant\" with the slug <code>ozy-chat-assistant<\/code>; the text domain now matches the slug.<\/li>\n<li>Changed: replaced all short <code>ozy<\/code>\/<code>OZY_<\/code> code prefixes with the unique <code>oozzy<\/code>\/<code>OOZZY_<\/code> prefix on functions, classes, options, transients, nonces, AJAX actions, and the shortcode (now <code>[oozzy_ai_agent]<\/code>).<\/li>\n<li>Changed: all upstream AI and voice requests now use the WordPress HTTP API (<code>wp_remote_post()<\/code>) exclusively; removed all direct cURL calls.<\/li>\n<li>Changed: voice transcription now uploads audio via a multipart HTTP request instead of writing a temporary file to disk.<\/li>\n<li>Removed: <code>load_plugin_textdomain()<\/code> call \u2014 WordPress.org loads translations automatically since WP 4.6.<\/li>\n<li>Fixed: corrected the Mistral terms\/privacy URLs to the working Legal Center links.<\/li>\n<\/ul>\n\n<h4>2.0.5<\/h4>\n\n<ul>\n<li>Fixed: replaced direct <code>&lt;style&gt;<\/code> tag output with <code>wp_add_inline_style()<\/code> for the accent color CSS variables, as required by WordPress.org guidelines.<\/li>\n<li>Fixed: updated Contributors field to correct WordPress.org username <code>idanishrangaiz<\/code>.<\/li>\n<li>Fixed: updated broken Mistral terms\/privacy URLs in readme.txt.<\/li>\n<\/ul>\n\n<h4>2.0.4<\/h4>\n\n<ul>\n<li>Fixed: replaced heredoc (&lt;&lt;&lt;EOT) string syntax in the system-prompt builder with standard string concatenation, to satisfy the WordPress.org Plugin Check (PluginCheck.CodeAnalysis.Heredoc.NotAllowed).<\/li>\n<li>Fixed: bumped \"Tested up to\" header to 7.0 to match the current WordPress release (\"Armstrong\").<\/li>\n<li>Fixed: added the missing <code>languages\/<\/code> directory (with a <code>ozy-chat-assistant.pot<\/code> translation template) so the <code>Domain Path: \/languages<\/code> header in the plugin file now resolves to an existing folder.<\/li>\n<\/ul>\n\n<p><h4>2.0.3<\/h4><\/p>\n\n<ul>\n<li>Removed: developer-promotion text that was injected into the AI system prompt. The AI no longer mentions the plugin author to your visitors.<\/li>\n<li>Removed: \"Allow External Suggestions\" setting (no longer needed). Setting default changed to off for any existing installs.<\/li>\n<li>Changed: chat widget footer simplified to \"Powered by OZY\" (brand only, no link, no full plugin name).<\/li>\n<li>Removed: developer bio and \"Contact\" CTA button from the admin Guide tab. Author info is available via the plugin page on WordPress.org instead.<\/li>\n<li>Removed: unused <code>standalone\/<\/code> folder (Vercel\/Node.js demo code unrelated to the WordPress plugin).<\/li>\n<li>Improved: added an \"External Services\" section to readme that fully discloses every third-party endpoint contacted and exactly what data is transmitted.<\/li>\n<li>Improved: added an inline reviewer-facing comment in <code>class-ozy-api.php<\/code> explaining why cURL is used in the SSE streaming path (WP HTTP API does not support response streaming).<\/li>\n<li>Improved: reduced readme tags to 5 (WP.org limit) and bumped \"Tested up to\" to 6.8.<\/li>\n<\/ul>\n\n<h4>2.0.2<\/h4>\n\n<ul>\n<li>Fixed: popup modal background appeared transparent on some themes \u2014 CSS variables now resolve correctly for the modal.<\/li>\n<li>Fixed: voice (mic) button no longer shows an oversized dark hover background; hover now only changes the icon color.<\/li>\n<li>Improved: chat input field is taller and wider with better padding for easier typing on both desktop and mobile.<\/li>\n<li>Improved: voice mic button is more compact (28px), giving the text input more room.<\/li>\n<li>Improved: input row uses center alignment and tighter spacing for a more polished look.<\/li>\n<li>Fixed: admin settings tab links now point to the correct top-level admin URL (admin.php instead of options-general.php).<\/li>\n<li>Fixed: resolved leftover merge artifacts in CSS that were breaking widget styling in certain browsers.<\/li>\n<\/ul>\n\n<h4>2.0.1<\/h4>\n\n<ul>\n<li>Fixed: saving settings on one tab (e.g. AI Providers) no longer resets toggles from other tabs (floating enable, popup enable, site-wide, auto-open).<\/li>\n<li>Added: auto-repair that restores visibility settings if all three are found to be off simultaneously.<\/li>\n<li>Improved: nonce verification now uses check_ajax_referer() for AJAX handlers.<\/li>\n<li>Improved: basic per-IP rate limiting (30 req\/min for chat, 10 req\/min for voice).<\/li>\n<li>Improved: MIME type validation and audio size check for voice transcription.<\/li>\n<li>Improved: removed all error-suppressor (@) operators; output buffering checked before flushing.<\/li>\n<li>Improved: user message bubble now renders in solid black bold text for better readability.<\/li>\n<li>Security: escHtml() now escapes double and single quotes to prevent attribute injection.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Added OpenAI (GPT-4o Mini, GPT-4o, GPT-3.5 Turbo) support<\/li>\n<li>Added Claude (Haiku, Sonnet, Opus) support<\/li>\n<li>Added configurable provider priority order<\/li>\n<li>Added automatic website content reader (pages, posts, products, menus)<\/li>\n<li>Redesigned dashboard with aesthetic card-based UI<\/li>\n<li>Added dual widget modes: floating button and popup modal, each independently togglable<\/li>\n<li>Added business knowledge base field<\/li>\n<li>Added external suggestions toggle<\/li>\n<li>Added agent icon URL field<\/li>\n<li>Removed contact form auto-fill (now pure AI conversation agent)<\/li>\n<li>Streaming support for all providers<\/li>\n<li>Improved system prompt with site context injection<\/li>\n<li>Updated to GPL-2.0-or-later license<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"AI agent that learns your website and helps visitors. OpenAI, Claude, Groq, Gemini &amp; Mistral. Drag-and-drop block for every builder. No monthly fees.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/bs.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/320485","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bs.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/bs.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/bs.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=320485"}],"author":[{"embeddable":true,"href":"https:\/\/bs.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/idanishrangaiz"}],"wp:attachment":[{"href":"https:\/\/bs.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=320485"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/bs.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=320485"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/bs.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=320485"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/bs.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=320485"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/bs.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=320485"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/bs.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=320485"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}