Changeset 3445867
- Timestamp:
- 01/23/2026 10:35:05 PM (2 months ago)
- Location:
- ask-my-content
- Files:
-
- 14 edited
-
assets/screenshot-1.png (modified) (previous)
-
assets/screenshot-2.png (modified) (previous)
-
trunk/ask-my-content.php (modified) (3 diffs)
-
trunk/assets/css/ask-my-content.css (modified) (1 diff)
-
trunk/assets/js/amc-admin-init.js (modified) (2 diffs)
-
trunk/build/ask-my-content/block.json (modified) (1 diff)
-
trunk/build/ask-my-content/index.asset.php (modified) (1 diff)
-
trunk/build/ask-my-content/index.js (modified) (1 diff)
-
trunk/build/ask-my-content/view.asset.php (modified) (1 diff)
-
trunk/build/ask-my-content/view.js (modified) (1 diff)
-
trunk/build/blocks-manifest.php (modified) (1 diff)
-
trunk/includes/settings.php (modified) (3 diffs)
-
trunk/readme.txt (modified) (6 diffs)
-
trunk/src/ask-my-content/block.json (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
ask-my-content/trunk/ask-my-content.php
r3440656 r3445867 4 4 * Plugin Name: Ask My Content - AI Q&A Chatbot 5 5 * 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.16 * Version: 0.8.0 7 7 * Requires at least: 5.8 8 8 * Requires PHP: 7.4 … … 92 92 $settings_path = $base_dir . 'assets/js/askmyco-settings.js'; 93 93 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'; 99 99 100 100 if (! wp_script_is($core_handle, 'registered')) { … … 190 190 191 191 /** 192 * Is the floating chat widget enabled? 193 */ 194 function 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 */ 202 function 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 } 221 add_action('wp_enqueue_scripts', 'askmyco_enqueue_floating_assets'); 222 223 /** 224 * Render the floating chat launcher and panel in the footer. 225 */ 226 function 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 } 249 add_action('wp_footer', 'askmyco_render_floating_chat'); 250 251 /** 192 252 * Return shared chat HTML markup. 193 253 */ -
ask-my-content/trunk/assets/css/ask-my-content.css
r3384523 r3445867 15 15 font: 14px/1.4 system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, sans-serif; 16 16 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; 17 47 } 18 48 -
ask-my-content/trunk/assets/js/amc-admin-init.js
r3387251 r3445867 119 119 })(); 120 120 121 // Enable Save Changes only when APIfields actually change121 // Enable Save Changes only when settings fields actually change 122 122 (function () { 123 123 function initSaveGuard() { … … 129 129 form.querySelector('[name="askmyco_api_url"]'), 130 130 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"]') 132 133 ].filter(function (el) { return !!el; }); 133 134 if (fields.length === 0) return; 134 135 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 }); 136 139 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 }); 138 146 submit.disabled = !changed; 139 147 } 140 148 check(); 141 149 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 }); 143 158 } 144 159 if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', initSaveGuard); -
ask-my-content/trunk/build/ask-my-content/block.json
r3440656 r3445867 3 3 "apiVersion": 3, 4 4 "name": "amc/ask-my-content", 5 "version": "0. 7.1",5 "version": "0.8.0", 6 6 "title": "Ask My Content", 7 7 "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 /******/ (() => { // webpackBootstrap2 /**3 * Use this file for JavaScript code that you want to run in the front-end4 * on posts/pages that contain this block.5 *6 * When this file is defined as the value of the `viewScript` property7 * in `block.json` it will be enqueued on the front end of the site.8 *9 * Example:10 *11 * ```js12 * {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 any18 * JavaScript running in the front-end, then you should delete this file and remove19 * the `viewScript` property from `block.json`.20 *21 * @see https://developer.wordpress.org/block-editor/reference-guides/block-api/block-metadata/#view-script22 */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 6 6 'apiVersion' => 3, 7 7 'name' => 'amc/ask-my-content', 8 'version' => '0. 7.1',8 'version' => '0.8.0', 9 9 'title' => 'Ask My Content', 10 10 'category' => 'widgets', -
ask-my-content/trunk/includes/settings.php
r3414721 r3445867 76 76 'default' => '', 77 77 ]); 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', [ 79 92 'type' => 'string', 80 93 'sanitize_callback' => 'sanitize_text_field', 81 'default' => '',94 'default' => __('AI Chat', 'ask-my-content'), 82 95 ]); 83 96 … … 90 103 }, 'ask-my-content', 'askmyco_main'); 91 104 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. 96 106 97 107 add_settings_field('askmyco_api_url', 'API URL', function () { … … 105 115 printf("<input type='number' min='1' max='65535' name='askmyco_api_port' value='%s' size='6' />", esc_attr($value)); 106 116 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 ); 107 135 }, 'ask-my-content', 'askmyco_main'); 108 136 -
ask-my-content/trunk/readme.txt
r3440656 r3445867 5 5 Requires PHP: 7.4 6 6 Tested up to: 6.9 7 Stable tag: 0. 7.17 Stable tag: 0.8.0 8 8 License: GPL-2.0-or-later 9 9 License URI: https://www.gnu.org/licenses/gpl-2.0.html 10 10 11 AI-powered Q&A chatbot block and shortcode that answers questions based on your own site's pages and posts.11 AI-powered Q&A chatbot floating chat, block and shortcode that answers questions based on your own site's pages and posts. 12 12 13 13 == Description == … … 18 18 19 19 **Key Features** 20 * Simple setup – install, activate, and add the chatbot with a shortcode or block.21 20 * Retrieval Augmented Generation (RAG) – answers are grounded in your actual site content. 22 21 * Uses OpenAI for embeddings and completions (via a secure Node.js backend). 23 22 * 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 – immediatelynotifies 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. 25 24 * 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. 28 26 29 27 **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.28 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. Indexing must be completed before the chat can answer questions. 29 2. 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. 32 30 3. Content is converted into embeddings (vector representations). 33 31 4. When a visitor asks a question, the chatbot retrieves the most relevant content snippets from your indexed pages. … … 42 40 1. Upload the plugin files to `/wp-content/plugins/ask-my-content`, or install via the WordPress Plugins screen. 43 41 2. Activate the plugin through the 'Plugins' screen in WordPress. 44 3. Optionally configure settings in **Dashboard → Ask My Content** ( backend API key, model options).42 3. Optionally configure settings in **Dashboard → Ask My Content** (floating launcher, indexing posts). 45 43 4. 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: 44 5. Add the chatbot to the website using either: 45 * Enable floating chat launcher site-wide 47 46 * The shortcode: `[ask_my_content]` 48 47 * The Gutenberg block: "Ask My Content" … … 51 50 52 51 = 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.52 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. 54 53 55 54 = Will this slow down my site? = … … 116 115 == Changelog == 117 116 118 = 0.7.1 = 117 = 0.8.0 = 118 Added optional floating chat launcher that can appear site-wide. 119 New settings let you enable the floating widget and customize the launcher button label (default: “AI Chat”). 120 To enable: go to Dashboard → Ask My Content and check “Enable floating chat launcher site-wide”, then Save Changes. 121 122 = 0.7.1 = 119 123 Minor fixes. 120 124 121 = 0.7.0 =125 = 0.7.0 = 122 126 Chat 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. 123 127 … … 135 139 = 0.4.2 = 136 140 Initial release – shortcode, block, automatic content sync, AI-powered answers. 141 142 == Upgrade Notice == 143 144 = 0.8.0 = 145 Added 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 3 3 "apiVersion": 3, 4 4 "name": "amc/ask-my-content", 5 "version": "0. 7.1",5 "version": "0.8.0", 6 6 "title": "Ask My Content", 7 7 "category": "widgets",
Note: See TracChangeset
for help on using the changeset viewer.