Plugin Directory


Ignore:
Timestamp:
10/17/2026 01:47:11 PM (12 days ago)
Author:
mxchat
Message:

Release 3.2.26 - security hardening, new models (GPT-6.1 Sol, Claude 5.5 family, Grok 4.7, Gemini 4 Argon, DeepSeek Flash), automatic moves off discontinued models, token usage in Transcripts, page-builder and ACF Blocks imports

File:
1 edited

Legend:

Unmodified
Added
Removed
  • mxchat-basic/trunk/js/admin-testing-tab.js

    r3670236 r3751971  
    77(function($) {
    88    'use strict';
     9
     10    // Knowledge-base titles and URLs (imported pages, sitemaps, files), action
     11    // labels and the URL guard's results are stored text: escape everything put
     12    // into the panel as HTML. Same quote-safe helper as mxchat_transcripts.js.
     13    function escapeHtml(text) {
     14        if (!text && text !== 0) return '';
     15        return String(text)
     16            .replace(/&/g, '&')
     17            .replace(/</g, '&lt;')
     18            .replace(/>/g, '&gt;')
     19            .replace(/"/g, '&quot;')
     20            .replace(/'/g, '&#039;');
     21    }
    922
    1023    var AdminTestingPanel = {
    … …  
    270283                } catch (e) {}
    271284
     285                var link = /^https?:\/\//i.test(String(url))
     286                    ? '<a href="' + escapeHtml(url) + '" target="_blank" rel="noopener noreferrer" class="url-link" title="' + escapeHtml(url) + '">' + escapeHtml(displayUrl) + '</a>'
     287                    : '<span class="url-link">' + escapeHtml(displayUrl) + '</span>';
    272288                html += '<div class="url-card"><div class="url-line">' +
    273                     '<span class="url-icon">&#128279;</span>' +
    274                     '<a href="' + url + '" target="_blank" rel="noopener noreferrer" class="url-link" title="' + url + '">' + displayUrl + '</a>' +
     289                    '<span class="url-icon">&#128279;</span>' + link +
    275290                    '</div></div>';
    276291            });
    … …  
    309324                    '<div class="action-line">' +
    310325                        '<span class="action-icon">' + statusIcon + '</span>' +
    311                         '<span class="action-name">' + action.intent_label + '</span>' +
     326                        '<span class="action-name">' + escapeHtml(action.intent_label) + '</span>' +
    312327                        '<span class="action-score">' + action.similarity_percentage + '%</span>' +
    313328                    '</div>' +
    … …  
    429444                    '<div class="match-source">' +
    430445                        (group.isUrl ?
    431                             '<span class="source-icon link-icon">&#128279;</span> ' + group.url :
    432                             '<span class="source-icon doc-icon">&#128196;</span> ' + group.url
     446                            '<span class="source-icon link-icon">&#128279;</span> ' + escapeHtml(group.url) :
     447                            '<span class="source-icon doc-icon">&#128196;</span> ' + escapeHtml(group.url)
    433448                        ) +
    434449                    '</div>' +
    … …  
    486501            }).done(function(data) {
    487502                if (data.success) {
    488                     $('#mxch-testing-threshold').html('<code>' + data.data.threshold_percentage + '</code>');
     503                    $('#mxch-testing-threshold').html('<code>' + escapeHtml(data.data.threshold_percentage) + '</code>');
    489504                } else {
    490505                    $('#mxch-testing-threshold').html('<span class="error-text">Error loading threshold</span>');
    … …  
    536551                if (data.success) {
    537552                    var kbData = data.data;
    538                     el.html('<span class="success-text">&#10003; ' + kbData.status + '</span> (' + kbData.type + ' - ' + kbData.documents + ')');
     553                    el.html('<span class="success-text">&#10003; ' + escapeHtml(kbData.status) + '</span> (' + escapeHtml(kbData.type) + ' - ' + escapeHtml(kbData.documents) + ')');
    539554                } else {
    540555                    el.html('<span class="error-text">Error loading KB status</span>');
    … …  
    641656            var entry = document.createElement('div');
    642657            entry.className = 'mxch-testing-debug-entry';
    643             entry.innerHTML = '<span class="mxch-testing-debug-timestamp">[' + timestamp + ']</span> ' + message;
     658            entry.innerHTML = '<span class="mxch-testing-debug-timestamp">[' + escapeHtml(timestamp) + ']</span> ' + escapeHtml(message);
    644659            consoleEl.appendChild(entry);
    645660            consoleEl.scrollTop = consoleEl.scrollHeight;
Note: See TracChangeset for help on using the changeset viewer.