Plugin Directory

Changeset 3445867


Ignore:
Timestamp:
01/23/2026 10:35:05 PM (2 months ago)
Author:
ugoltsev
Message:

Release 0.8.0

Location:
ask-my-content
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • ask-my-content/trunk/ask-my-content.php

    r3440656 r3445867  
    44 * Plugin Name:       Ask My Content - AI Q&A Chatbot
    55 * Description:       AI-powered Q&A chatbot, allowing users to ask questions and receive answers sourced from the site’s own posts and pages.
    6  * Version:           0.7.1
     6 * Version:           0.8.0
    77 * Requires at least: 5.8
    88 * Requires PHP:      7.4
     
    9292    $settings_path = $base_dir . 'assets/js/askmyco-settings.js';
    9393
    94     $core_ver = file_exists($core_path) ? filemtime($core_path) : '0.7.1';
    95     $frontend_ver = file_exists($frontend_path) ? filemtime($frontend_path) : '0.7.1';
    96     $admin_init_ver = file_exists($admin_init_path) ? filemtime($admin_init_path) : '0.7.1';
    97     $style_ver = file_exists($style_path) ? filemtime($style_path) : '0.7.1';
    98     $settings_ver = file_exists($settings_path) ? filemtime($settings_path) : '0.7.1';
     94    $core_ver = file_exists($core_path) ? filemtime($core_path) : '0.8.0';
     95    $frontend_ver = file_exists($frontend_path) ? filemtime($frontend_path) : '0.8.0';
     96    $admin_init_ver = file_exists($admin_init_path) ? filemtime($admin_init_path) : '0.8.0';
     97    $style_ver = file_exists($style_path) ? filemtime($style_path) : '0.8.0';
     98    $settings_ver = file_exists($settings_path) ? filemtime($settings_path) : '0.8.0';
    9999
    100100    if (! wp_script_is($core_handle, 'registered')) {
     
    190190
    191191/**
     192 * Is the floating chat widget enabled?
     193 */
     194function askmyco_is_floating_enabled()
     195{
     196    return get_option('askmyco_floating_enabled', '0') === '1';
     197}
     198
     199/**
     200 * Enqueue floating widget assets on public pages (site-wide when enabled).
     201 */
     202function askmyco_enqueue_floating_assets()
     203{
     204    if (! askmyco_is_floating_enabled()) {
     205        return;
     206    }
     207
     208    askmyco_enqueue_chat_assets();
     209
     210    $floating_path = plugin_dir_path(__FILE__) . 'assets/js/amc-floating.js';
     211    $floating_ver = file_exists($floating_path) ? filemtime($floating_path) : '0.8.0';
     212
     213    wp_enqueue_script(
     214        'amc-floating',
     215        plugin_dir_url(__FILE__) . 'assets/js/amc-floating.js',
     216        ['amc-frontend-chat'],
     217        $floating_ver,
     218        true
     219    );
     220}
     221add_action('wp_enqueue_scripts', 'askmyco_enqueue_floating_assets');
     222
     223/**
     224 * Render the floating chat launcher and panel in the footer.
     225 */
     226function askmyco_render_floating_chat()
     227{
     228    if (! askmyco_is_floating_enabled()) {
     229        return;
     230    }
     231
     232    $button_label = get_option('askmyco_floating_label', __('AI Chat', 'ask-my-content'));
     233    $button_label = $button_label ? $button_label : __('AI Chat', 'ask-my-content');
     234
     235    $chat_markup = askmyco_get_chat_markup([
     236        'title'  => __('Ask My Content', 'ask-my-content'),
     237        'width'  => '360px',
     238        'height' => '420px',
     239    ]);
     240
     241    echo '<div id="amc-float" class="amc-float">';
     242    echo '<button id="amc-float-launcher" class="amc-float-launcher" type="button" aria-expanded="false" aria-controls="amc-float-panel">' . esc_html($button_label) . '</button>';
     243    echo '<div id="amc-float-panel" class="amc-float-panel" hidden>';
     244    // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
     245    echo $chat_markup;
     246    echo '</div>';
     247    echo '</div>';
     248}
     249add_action('wp_footer', 'askmyco_render_floating_chat');
     250
     251/**
    192252 * Return shared chat HTML markup.
    193253 */
  • ask-my-content/trunk/assets/css/ask-my-content.css

    r3384523 r3445867  
    1515    font: 14px/1.4 system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif;
    1616    max-width: var(--amc-chat-width);
     17}
     18
     19/* Floating widget */
     20.amc-float {
     21    position: fixed;
     22    right: 20px;
     23    bottom: 20px;
     24    z-index: 9999;
     25}
     26
     27.amc-float-launcher {
     28    background: var(--amc-header-bg, #0d6186);
     29    color: var(--amc-header-color, #ffffff);
     30    border: 0;
     31    border-radius: 999px;
     32    padding: 10px 16px;
     33    font-weight: 600;
     34    cursor: pointer;
     35    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.2);
     36}
     37
     38.amc-float-panel {
     39    margin-top: 10px;
     40    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.25);
     41    border-radius: 8px;
     42    overflow: hidden;
     43}
     44
     45.amc-float-panel .amc-chat {
     46    max-width: none;
    1747}
    1848
  • ask-my-content/trunk/assets/js/amc-admin-init.js

    r3387251 r3445867  
    119119})();
    120120
    121 // Enable Save Changes only when API fields actually change
     121// Enable Save Changes only when settings fields actually change
    122122(function () {
    123123    function initSaveGuard() {
     
    129129            form.querySelector('[name="askmyco_api_url"]'),
    130130            form.querySelector('[name="askmyco_api_port"]'),
    131             form.querySelector('[name="askmyco_api_key"]')
     131            form.querySelector('[name="askmyco_floating_enabled"]'),
     132            form.querySelector('[name="askmyco_floating_label"]')
    132133        ].filter(function (el) { return !!el; });
    133134        if (fields.length === 0) return;
    134135        var initial = {};
    135         fields.forEach(function (el) { initial[el.name] = (el.value || ''); });
     136        fields.forEach(function (el) {
     137            initial[el.name] = (el.type === 'checkbox') ? (el.checked ? '1' : '0') : (el.value || '');
     138        });
    136139        function check() {
    137             var changed = fields.some(function (el) { return (el.value || '') !== initial[el.name]; });
     140            var changed = fields.some(function (el) {
     141                if (el.type === 'checkbox') {
     142                    return (el.checked ? '1' : '0') !== initial[el.name];
     143                }
     144                return (el.value || '') !== initial[el.name];
     145            });
    138146            submit.disabled = !changed;
    139147        }
    140148        check();
    141149        fields.forEach(function (el) { el.addEventListener('input', check); el.addEventListener('change', check); });
    142         form.addEventListener('reset', function () { setTimeout(function () { fields.forEach(function (el) { initial[el.name] = (el.value || ''); }); check(); }, 0); });
     150        form.addEventListener('reset', function () {
     151            setTimeout(function () {
     152                fields.forEach(function (el) {
     153                    initial[el.name] = (el.type === 'checkbox') ? (el.checked ? '1' : '0') : (el.value || '');
     154                });
     155                check();
     156            }, 0);
     157        });
    143158    }
    144159    if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', initSaveGuard);
  • ask-my-content/trunk/build/ask-my-content/block.json

    r3440656 r3445867  
    33  "apiVersion": 3,
    44  "name": "amc/ask-my-content",
    5   "version": "0.7.1",
     5  "version": "0.8.0",
    66  "title": "Ask My Content",
    77  "category": "widgets",
  • ask-my-content/trunk/build/ask-my-content/index.asset.php

    r3384523 r3445867  
    1 <?php return array('dependencies' => array('react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-i18n'), 'version' => 'b679b7f7e01fc121e42d');
     1<?php return array('dependencies' => array('react-jsx-runtime', 'wp-block-editor', 'wp-blocks', 'wp-components', 'wp-i18n'), 'version' => 'c77f09ec4ae6634e26a4');
  • ask-my-content/trunk/build/ask-my-content/index.js

    r3384523 r3445867  
    1 (()=>{"use strict";var e,a={821:()=>{const e=window.wp.blocks,a=(window.wp.i18n,window.wp.blockEditor),l=window.wp.components,t=window.ReactJSXRuntime,n=JSON.parse('{"UU":"amc/ask-my-content"}');(0,e.registerBlockType)(n.UU,{edit:function({attributes:e,setAttributes:n}){const{title:o,width:r,height:i,headerBackground:c,headerTextColor:u,chatBackground:s,chatUserBubble:h,chatBotBubble:d,inputBackground:b,inputTextColor:p}=e,g=(0,a.useBlockProps)({style:{"--amc-header-bg":c,"--amc-header-color":u,"--amc-chat-bg":s,"--amc-user-bg":h,"--amc-bot-bg":d,"--amc-input-bg":b,"--amc-input-color":p,"--amc-chat-width":r||"640px","--amc-chat-height":i||"440px",border:"1px solid #0d6186",padding:"12px",background:"#0d6186",color:"#fff"}});return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(a.InspectorControls,{children:[(0,t.jsx)(l.PanelBody,{title:"Chat Header",initialOpen:!0,children:(0,t.jsx)(l.TextControl,{label:"Title",value:o,onChange:e=>n({title:e})})}),(0,t.jsxs)(l.PanelBody,{title:"Size",initialOpen:!0,children:[(0,t.jsx)(l.__experimentalUnitControl,{label:"Width",value:r,onChange:e=>n({width:e}),units:[{value:"px",label:"px"},{value:"%",label:"%"},{value:"em",label:"em"},{value:"rem",label:"rem"},{value:"vw",label:"vw"}]}),(0,t.jsx)(l.__experimentalUnitControl,{label:"Height",value:i,onChange:e=>n({height:e}),units:[{value:"px",label:"px"},{value:"em",label:"em"},{value:"rem",label:"rem"},{value:"vh",label:"vh"}]})]}),(0,t.jsx)(a.PanelColorSettings,{title:"Colors",colorSettings:[{label:"Header Background",value:c,onChange:e=>n({headerBackground:e})},{label:"Header Text",value:u,onChange:e=>n({headerTextColor:e})},{label:"Chat Background",value:s,onChange:e=>n({chatBackground:e})},{label:"User Bubble",value:h,onChange:e=>n({chatUserBubble:e})},{label:"Bot Bubble",value:d,onChange:e=>n({chatBotBubble:e})},{label:"Input Background",value:b,onChange:e=>n({inputBackground:e})},{label:"Input Text",value:p,onChange:e=>n({inputTextColor:e})}]})]}),(0,t.jsxs)("div",{...g,children:[(0,t.jsx)("p",{style:{fontWeight:"600",margin:0},children:o}),(0,t.jsx)("p",{style:{marginTop:"8px",background:"#fff",padding:"8px",borderRadius:"4px",color:"#000"},children:"The live site will display the interactive chat interface. This editor preview only shows configuration controls."})]})]})}})}},l={};function t(e){var n=l[e];if(void 0!==n)return n.exports;var o=l[e]={exports:{}};return a[e](o,o.exports,t),o.exports}t.m=a,e=[],t.O=(a,l,n,o)=>{if(!l){var r=1/0;for(s=0;s<e.length;s++){for(var[l,n,o]=e[s],i=!0,c=0;c<l.length;c++)(!1&o||r>=o)&&Object.keys(t.O).every(e=>t.O[e](l[c]))?l.splice(c--,1):(i=!1,o<r&&(r=o));if(i){e.splice(s--,1);var u=n();void 0!==u&&(a=u)}}return a}o=o||0;for(var s=e.length;s>0&&e[s-1][2]>o;s--)e[s]=e[s-1];e[s]=[l,n,o]},t.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),(()=>{var e={712:0,624:0};t.O.j=a=>0===e[a];var a=(a,l)=>{var n,o,[r,i,c]=l,u=0;if(r.some(a=>0!==e[a])){for(n in i)t.o(i,n)&&(t.m[n]=i[n]);if(c)var s=c(t)}for(a&&a(l);u<r.length;u++)o=r[u],t.o(e,o)&&e[o]&&e[o][0](),e[o]=0;return t.O(s)},l=globalThis.webpackChunkask_my_content=globalThis.webpackChunkask_my_content||[];l.forEach(a.bind(null,0)),l.push=a.bind(null,l.push.bind(l))})();var n=t.O(void 0,[624],()=>t(821));n=t.O(n)})();
     1(()=>{"use strict";var e,a={821(){const e=window.wp.blocks,a=(window.wp.i18n,window.wp.blockEditor),l=window.wp.components,t=window.ReactJSXRuntime,n=JSON.parse('{"UU":"amc/ask-my-content"}');(0,e.registerBlockType)(n.UU,{edit:function({attributes:e,setAttributes:n}){const{title:o,width:r,height:i,headerBackground:c,headerTextColor:u,chatBackground:s,chatUserBubble:h,chatBotBubble:d,inputBackground:b,inputTextColor:p}=e,g=(0,a.useBlockProps)({style:{"--amc-header-bg":c,"--amc-header-color":u,"--amc-chat-bg":s,"--amc-user-bg":h,"--amc-bot-bg":d,"--amc-input-bg":b,"--amc-input-color":p,"--amc-chat-width":r||"640px","--amc-chat-height":i||"440px",border:"1px solid #0d6186",padding:"12px",background:"#0d6186",color:"#fff"}});return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(a.InspectorControls,{children:[(0,t.jsx)(l.PanelBody,{title:"Chat Header",initialOpen:!0,children:(0,t.jsx)(l.TextControl,{label:"Title",value:o,onChange:e=>n({title:e})})}),(0,t.jsxs)(l.PanelBody,{title:"Size",initialOpen:!0,children:[(0,t.jsx)(l.__experimentalUnitControl,{label:"Width",value:r,onChange:e=>n({width:e}),units:[{value:"px",label:"px"},{value:"%",label:"%"},{value:"em",label:"em"},{value:"rem",label:"rem"},{value:"vw",label:"vw"}]}),(0,t.jsx)(l.__experimentalUnitControl,{label:"Height",value:i,onChange:e=>n({height:e}),units:[{value:"px",label:"px"},{value:"em",label:"em"},{value:"rem",label:"rem"},{value:"vh",label:"vh"}]})]}),(0,t.jsx)(a.PanelColorSettings,{title:"Colors",colorSettings:[{label:"Header Background",value:c,onChange:e=>n({headerBackground:e})},{label:"Header Text",value:u,onChange:e=>n({headerTextColor:e})},{label:"Chat Background",value:s,onChange:e=>n({chatBackground:e})},{label:"User Bubble",value:h,onChange:e=>n({chatUserBubble:e})},{label:"Bot Bubble",value:d,onChange:e=>n({chatBotBubble:e})},{label:"Input Background",value:b,onChange:e=>n({inputBackground:e})},{label:"Input Text",value:p,onChange:e=>n({inputTextColor:e})}]})]}),(0,t.jsxs)("div",{...g,children:[(0,t.jsx)("p",{style:{fontWeight:"600",margin:0},children:o}),(0,t.jsx)("p",{style:{marginTop:"8px",background:"#fff",padding:"8px",borderRadius:"4px",color:"#000"},children:"The live site will display the interactive chat interface. This editor preview only shows configuration controls."})]})]})}})}},l={};function t(e){var n=l[e];if(void 0!==n)return n.exports;var o=l[e]={exports:{}};return a[e](o,o.exports,t),o.exports}t.m=a,e=[],t.O=(a,l,n,o)=>{if(!l){var r=1/0;for(s=0;s<e.length;s++){for(var[l,n,o]=e[s],i=!0,c=0;c<l.length;c++)(!1&o||r>=o)&&Object.keys(t.O).every(e=>t.O[e](l[c]))?l.splice(c--,1):(i=!1,o<r&&(r=o));if(i){e.splice(s--,1);var u=n();void 0!==u&&(a=u)}}return a}o=o||0;for(var s=e.length;s>0&&e[s-1][2]>o;s--)e[s]=e[s-1];e[s]=[l,n,o]},t.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),(()=>{var e={712:0,624:0};t.O.j=a=>0===e[a];var a=(a,l)=>{var n,o,[r,i,c]=l,u=0;if(r.some(a=>0!==e[a])){for(n in i)t.o(i,n)&&(t.m[n]=i[n]);if(c)var s=c(t)}for(a&&a(l);u<r.length;u++)o=r[u],t.o(e,o)&&e[o]&&e[o][0](),e[o]=0;return t.O(s)},l=globalThis.webpackChunkask_my_content=globalThis.webpackChunkask_my_content||[];l.forEach(a.bind(null,0)),l.push=a.bind(null,l.push.bind(l))})();var n=t.O(void 0,[624],()=>t(821));n=t.O(n)})();
  • ask-my-content/trunk/build/ask-my-content/view.asset.php

    r3414721 r3445867  
    1 <?php return array('dependencies' => array(), 'version' => 'cb91b5250a54e064162f');
     1<?php return array('dependencies' => array(), 'version' => '31d6cfe0d16ae931b73c');
  • ask-my-content/trunk/build/ask-my-content/view.js

    r3414721 r3445867  
    1 /******/ (() => { // webpackBootstrap
    2 /**
    3  * Use this file for JavaScript code that you want to run in the front-end
    4  * on posts/pages that contain this block.
    5  *
    6  * When this file is defined as the value of the `viewScript` property
    7  * in `block.json` it will be enqueued on the front end of the site.
    8  *
    9  * Example:
    10  *
    11  * ```js
    12  * {
    13  *   "viewScript": "file:./view.js"
    14  * }
    15  * ```
    16  *
    17  * If you're not making any changes to this file because your project doesn't need any
    18  * JavaScript running in the front-end, then you should delete this file and remove
    19  * the `viewScript` property from `block.json`.
    20  *
    21  * @see https://developer.wordpress.org/block-editor/reference-guides/block-api/block-metadata/#view-script
    22  */
    23 
    24 /* eslint-disable no-console */
    25 // console.log( 'Hello World! (from amc-ask-my-content block)' );
    26 /* eslint-enable no-console */
    27 /******/ })()
    28 ;
  • ask-my-content/trunk/build/blocks-manifest.php

    r3440656 r3445867  
    66        'apiVersion' => 3,
    77        'name' => 'amc/ask-my-content',
    8         'version' => '0.7.1',
     8        'version' => '0.8.0',
    99        'title' => 'Ask My Content',
    1010        'category' => 'widgets',
  • ask-my-content/trunk/includes/settings.php

    r3414721 r3445867  
    7676        'default' => '',
    7777    ]);
    78     register_setting('askmyco_settings_group', 'askmyco_api_key', [
     78    // NOTE: API key is not currently used. Keep commented for future premium tab reintroduction.
     79    // register_setting('askmyco_settings_group', 'askmyco_api_key', [
     80    //     'type' => 'string',
     81    //     'sanitize_callback' => 'sanitize_text_field',
     82    //     'default' => '',
     83    // ]);
     84    register_setting('askmyco_settings_group', 'askmyco_floating_enabled', [
     85        'type' => 'string',
     86        'sanitize_callback' => function ($value) {
     87            return $value === '1' ? '1' : '0';
     88        },
     89        'default' => '0',
     90    ]);
     91    register_setting('askmyco_settings_group', 'askmyco_floating_label', [
    7992        'type' => 'string',
    8093        'sanitize_callback' => 'sanitize_text_field',
    81         'default' => '',
     94        'default' => __('AI Chat', 'ask-my-content'),
    8295    ]);
    8396
     
    90103    }, 'ask-my-content', 'askmyco_main');
    91104
    92     add_settings_field('askmyco_api_key', 'API Key', function () {
    93         $value = get_option('askmyco_api_key');
    94         printf("<input type='text' hidden name='askmyco_api_key' value='%s' size='50' />", esc_attr($value));
    95     }, 'ask-my-content', 'askmyco_main');
     105    // NOTE: API key UI removed (unused). Restore here if adding a premium tab later.
    96106
    97107    add_settings_field('askmyco_api_url', 'API URL', function () {
     
    105115        printf("<input type='number' min='1' max='65535' name='askmyco_api_port' value='%s' size='6' />", esc_attr($value));
    106116        echo " <span class='description'>" . esc_html__('Leave empty to use default for the URL scheme (443 for https, 80 for http)', 'ask-my-content') . "</span>";
     117    }, 'ask-my-content', 'askmyco_main');
     118
     119    add_settings_field('askmyco_floating_enabled', 'Floating Chat Widget', function () {
     120        $value = get_option('askmyco_floating_enabled', '0');
     121        printf(
     122            "<label><input type='checkbox' name='askmyco_floating_enabled' value='1' %s /> %s</label>",
     123            checked($value, '1', false),
     124            esc_html__('Enable floating chat launcher site-wide', 'ask-my-content')
     125        );
     126    }, 'ask-my-content', 'askmyco_main');
     127
     128    add_settings_field('askmyco_floating_label', 'Chat Button Name', function () {
     129        $value = get_option('askmyco_floating_label', __('AI Chat', 'ask-my-content'));
     130        printf(
     131            "<input type='text' name='askmyco_floating_label' value='%s' size='24' /> <span class='description'>%s</span>",
     132            esc_attr($value),
     133            esc_html__('Text shown on the floating launcher button.', 'ask-my-content')
     134        );
    107135    }, 'ask-my-content', 'askmyco_main');
    108136
  • ask-my-content/trunk/readme.txt

    r3440656 r3445867  
    55Requires PHP: 7.4
    66Tested up to: 6.9
    7 Stable tag: 0.7.1
     7Stable tag: 0.8.0
    88License: GPL-2.0-or-later
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
    1010
    11 AI-powered Q&A chatbot block and shortcode that answers questions based on your own site's pages and posts.
     11AI-powered Q&A chatbot floating chat, block and shortcode that answers questions based on your own site's pages and posts.
    1212
    1313== Description ==
     
    1818
    1919**Key Features**
    20 * Simple setup – install, activate, and add the chatbot with a shortcode or block.
    2120* Retrieval Augmented Generation (RAG) – answers are grounded in your actual site content.
    2221* Uses OpenAI for embeddings and completions (via a secure Node.js backend).
    2322* Change tracking – automatically queues edited pages/posts so you can rerun indexing from the dashboard or `wp amc` when you're ready.
    24 * Deleted content removal – immediately notifies the backend when pages or posts are trashed or permanently deleted.
     23* Deleted content removal – auto notifies the backend when pages or posts are trashed or permanently deleted.
    2524* Lightweight – no heavy admin UI or visual layout tools, just the essentials.
    26 * Flexible – works with posts, pages, and optionally header/footer "virtual posts."
    27 * Freemium model – the current free version includes generous token usage limits; a future premium version will remove these limits and provide an Ask My Content API key.
     25* Flexible – works with posts, pages, and header/footer.
    2826
    2927**How it works**
    30 1. After activating the plugin, go to **Dashboard → Ask My Content** and press “Start Indexing” (or run `wp amc index`) to send your site content to the backend.
    31 2. Add the **Ask My Content** block to an existing or new page (or place the `[ask_my_content]` shortcode) and publish/update the page so the chat interface has a front-end location.
     281. After activating the plugin, go to **Dashboard → Ask My Content** and press “Start Indexing” (or run `wp amc index`) to send your site content to the backend. Indexing must be completed before the chat can answer questions.
     292. Enable the floating launcher to show the chat site-wide; or add the **Ask My Content** block to an existing or new page (or place the `[ask_my_content]` shortcode) and publish/update the page so the chat interface has a front-end location.
    32303. Content is converted into embeddings (vector representations).
    33314. When a visitor asks a question, the chatbot retrieves the most relevant content snippets from your indexed pages.
     
    42401. Upload the plugin files to `/wp-content/plugins/ask-my-content`, or install via the WordPress Plugins screen.
    43412. Activate the plugin through the 'Plugins' screen in WordPress.
    44 3. Optionally configure settings in **Dashboard → Ask My Content** (backend API key, model options).
     423. Optionally configure settings in **Dashboard → Ask My Content** (floating launcher, indexing posts).
    45434. Run the initial indexing from **Dashboard → Ask My Content** by pressing “Start Indexing”, or run `wp amc index` from the command line.
    46 5. Add the chatbot to a page using either:
     445. Add the chatbot to the website using either:
     45  * Enable floating chat launcher site-wide
    4746  * The shortcode: `[ask_my_content]`
    4847  * The Gutenberg block: "Ask My Content"
     
    5150
    5251= Does this plugin use my OpenAI API key? =
    53 By default, the plugin uses the developer's OpenAI API key on a secure backend (with generous usage limits). This means you don't need your own OpenAI API key. A future premium version will remove these limits and offer a dedicated Ask My Content API key for unlimited usage.
     52By default, the plugin uses the developer's OpenAI API key on a secure backend (with generous usage limits). This means you don't need your own OpenAI API key.
    5453
    5554= Will this slow down my site? =
     
    116115== Changelog ==
    117116
    118 = 0.7.1  =
     117= 0.8.0 =
     118Added optional floating chat launcher that can appear site-wide.
     119New settings let you enable the floating widget and customize the launcher button label (default: “AI Chat”).
     120To enable: go to Dashboard → Ask My Content and check “Enable floating chat launcher site-wide”, then Save Changes.
     121
     122= 0.7.1 =
    119123Minor fixes.
    120124
    121 = 0.7.0  =
     125= 0.7.0 =
    122126Chat now behaves more like a real conversation: each visitor/admin gets their own session so replies stick to their thread, and the chat window remembers recent history in the same tab when you come back.
    123127
     
    135139= 0.4.2 =
    136140Initial release – shortcode, block, automatic content sync, AI-powered answers.
     141
     142== Upgrade Notice ==
     143
     144= 0.8.0 =
     145Added a new optional floating chat launcher. Enable it in Dashboard -> Ask My Content after updating.
  • ask-my-content/trunk/src/ask-my-content/block.json

    r3440656 r3445867  
    33    "apiVersion": 3,
    44    "name": "amc/ask-my-content",
    5     "version": "0.7.1",
     5    "version": "0.8.0",
    66    "title": "Ask My Content",
    77    "category": "widgets",
Note: See TracChangeset for help on using the changeset viewer.