| @@ -2,9 +2,9 @@ | ||
| 2 | 2 | /** |
| 3 | 3 | * Plugin Name: MxChat |
| 4 | 4 | * Plugin URI: https://mxchat.ai/ |
| 5 | 5 | * Description: AI chatbot for WordPress with OpenAI, Claude, xAI, DeepSeek, live agent, PDF uploads, WooCommerce, and training on website data. |
| 6 | - * Version: 3.2.20 | |
| 6 | + * Version: 3.2.23 | |
| 7 | 7 | * Author: MxChat |
| 8 | 8 | * Author URI: https://mxchat.ai |
| 9 | 9 | * License: GPLv2 or later |
| 10 | 10 | * License URI: https://www.gnu.org/licenses/gpl-2.0.html |
| @@ -38,8 +38,20 @@ | ||
| 38 | 38 | define('MXCHAT_VERSION', $version); |
| 39 | 39 | } |
| 40 | 40 | |
| 41 | 41 | /** |
| 42 | + * Toolbar items API level (plan-mxchat-20260916-65c9b6). Defined only by cores | |
| 43 | + * that apply the `mxchat_chat_toolbar_items` filter while rendering the chat | |
| 44 | + * toolbar and fire the `mxchat:toolbar-ready` / `mxchat:opened` document events. | |
| 45 | + * Add-ons test `defined('MXCHAT_TOOLBAR_ITEMS_API')` and fall back to their | |
| 46 | + * older DOM-injection path on cores without it, so a button is never rendered | |
| 47 | + * twice. Bump the value only if the item shape (id / html / order) changes. | |
| 48 | + */ | |
| 49 | +if (!defined('MXCHAT_TOOLBAR_ITEMS_API')) { | |
| 50 | + define('MXCHAT_TOOLBAR_ITEMS_API', 1); | |
| 51 | +} | |
| 52 | + | |
| 53 | +/** | |
| 42 | 54 | * Default confidence floor for the in-chat YouTube card, as a percentage |
| 43 | 55 | * (plan-mxchat-20260813-f52492). Higher than the site-wide Similarity |
| 44 | 56 | * Threshold default of 35 by design — see MxChat_Utils::video_embed_threshold(). |
| 45 | 57 | * Declared here so the gate, the admin field and the tests all read ONE number. |
| @@ -488,8 +500,9 @@ | ||
| 488 | 500 | 'includes/class-mxchat-editor-assistant.php', |
| 489 | 501 | 'includes/class-rest-api.php', |
| 490 | 502 | 'admin/class-ajax-handler.php', |
| 491 | 503 | 'admin/class-pinecone-manager.php', |
| 504 | + 'admin/class-pinecone-documents.php', | |
| 492 | 505 | 'admin/class-knowledge-manager.php', |
| 493 | 506 | 'admin/class-vectorstore-manager.php' |
| 494 | 507 | ); |
| 495 | 508 | |
| @@ -1358,8 +1371,9 @@ | ||
| 1358 | 1371 | url TEXT NOT NULL, |
| 1359 | 1372 | article_content LONGTEXT NOT NULL, |
| 1360 | 1373 | embedding_vector LONGTEXT, |
| 1361 | 1374 | source_url TEXT DEFAULT NULL, |
| 1375 | + title VARCHAR(255) DEFAULT NULL, | |
| 1362 | 1376 | role_restriction VARCHAR(50) DEFAULT 'public', |
| 1363 | 1377 | content_type VARCHAR(50) DEFAULT 'content', |
| 1364 | 1378 | timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, |
| 1365 | 1379 | PRIMARY KEY (id), |
| @@ -1429,8 +1443,13 @@ | ||
| 1429 | 1443 | $wpdb->query("ALTER TABLE $system_prompt_table ADD COLUMN source_url TEXT DEFAULT NULL"); |
| 1430 | 1444 | } |
| 1431 | 1445 | if (!in_array('role_restriction', $existing_system_column_names)) { |
| 1432 | 1446 | $wpdb->query("ALTER TABLE $system_prompt_table ADD COLUMN role_restriction VARCHAR(50) DEFAULT 'public' AFTER source_url"); |
| 1447 | + } | |
| 1448 | + // Page title captured at import time (3.2.23, plan d9ee66) - read by | |
| 1449 | + // add-ons that name a source, e.g. AI Search's source cards. | |
| 1450 | + if (!in_array('title', $existing_system_column_names)) { | |
| 1451 | + $wpdb->query("ALTER TABLE $system_prompt_table ADD COLUMN title VARCHAR(255) DEFAULT NULL AFTER source_url"); | |
| 1433 | 1452 | } |
| 1434 | 1453 | } |
| 1435 | 1454 | |
| 1436 | 1455 | // Set default thresholds for existing intents |