<?xml version="1.0" encoding="UTF-8"?>    <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
      <channel>
        <title></title>
        <link>https://interactivetools.com/forum/forum-search.php?k=user%3ADave</link>
        <description></description>
        <pubDate>Wed, 16 Sep 2026 10:35:21 -0700</pubDate>
        <language>en-us</language>
        <atom:link href="https://interactivetools.com/forum/forum-search.php?k=user%3ADave&amp;rss=1" rel="self" type="application/rss+xml" />

                <item>
          <title>Recommended upgrade path from CMS Builder 3.54 / PHP 7.4 to current version / PHP 8.x</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248490#post2248490</link>
          <description><![CDATA[<p>Hi <span>Andreas,&nbsp;</span></p>
<p><span>We usually upgrade both at the same time.&nbsp; So upload the latest CMSB, then switch PHP over to the latest version your hosting supports.&nbsp; Then monitor the CMS Developer Log for any issues.</span></p>
<p><span>Our upgrade docs are here: <a href="https://interactivetools.com/docs/cmsbuilder/getting-started/upgrading/" rel="nofollow">https://interactivetools.com/docs/cmsbuilder/getting-started/upgrading/</a></span></p>
<p>And if you have older plugins, you may need to upgrade those as well.&nbsp; But you can wait and see if they generate any errors.</p>
<p>Hope that helps!</p>
]]></description>
          <pubDate>Sun, 13 Sep 2026 20:36:42 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248490#post2248490</guid>
        </item>
                <item>
          <title>I would like to get all CMS Versions since 3.65</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248488#post2248488</link>
          <description><![CDATA[<p>Hi Gary,</p>
<p>Okay, yea I'd recommend using the latest version.&nbsp; Also, we have another big update coming very soon!</p>]]></description>
          <pubDate>Tue, 01 Sep 2026 16:02:10 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248488#post2248488</guid>
        </item>
                <item>
          <title>I would like to get all CMS Versions since 3.65</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248485#post2248485</link>
          <description><![CDATA[<p>Hi Gary,&nbsp;</p>
<p>We generally recommend running the latest release, as it includes the most fixes.&nbsp; &nbsp;What are you trying to do?&nbsp;</p>

]]></description>
          <pubDate>Mon, 31 Aug 2026 23:27:01 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248485#post2248485</guid>
        </item>
                <item>
          <title>loadINI: Undefined array key &quot;PATH_INFO&quot; while upgrading from 2.14 to 3.65</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248471#post2248471</link>
          <description><![CDATA[<p>Hi Gary,&nbsp;</p>
<p>If you can fill out the 2nd level support request we can take a look for you to get you up and running ASAP:</p>
<p><a href="https://interactivetools.com/support/request/" rel="nofollow">https://interactivetools.com/support/request/</a></p>
]]></description>
          <pubDate>Tue, 25 Aug 2026 07:44:07 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248471#post2248471</guid>
        </item>
                <item>
          <title>this is a newer error customer reports, over last 2 months</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248464#post2248464</link>
          <description><![CDATA[<p>Hi Codee,</p>
<p>Thanks for the report! We tracked this down, and it's a timing issue with bulk uploads, not a permissions problem or an upload limit.</p>
<p>Two things are going on:</p>
<ol>
<li>The upload form doesn't limit how many files it sends at once. Browsers used to cap this at about 6 requests per server, but on newer hosting with HTTP/2 that cap is gone, so dropping 100 images can start 100 uploads at the same time. Each one is a separate server process resizing images into thumbnails, and 100 of those at once is likely what's causing the hangs.</li>
<li>Each upload request also cleans up old temporary upload files. With that many requests running at once, they all try to erase the same files - the first one wins, and the others report "No such file or directory". The CMS was treating that as an error, but nothing is actually wrong: the file was already removed. That's the "Unable to remove file" message your client is seeing.</li>
</ol>
<p>Here's a patch you can apply to the 3.84 site now. Both changes will also be in the next release.</p>
<p>In cmsb/lib/upload_storage_strategy.php (around line 123), find:</p>
<pre class="language-php"><code>if (!@unlink($filepath)) {
    $error  = "Unable to remove file '" .htmlencode($filepath). "'\n\n";
    $error .= "Please ask your server administrator to check permissions on that file and directory.\n\n";
    $error .= "The PHP error message was: " .errorlog_lastError(). "\n";
    throw new RuntimeException($error);
}</code></pre>
<p>And replace it with:</p>
<pre class="language-php"><code>if (!@unlink($filepath)) {
    clearstatcache(true, $filepath);
    if (is_file($filepath)) {
        \Itools\Cmsb\CMS::log("Unable to remove upload file '$filepath': " . errorlog_lastError());
    }
}</code></pre>
<p>Then in cmsb/lib/menus/default/edit_functions.js (around line 192), find 'multi' : true, and add this line below it:</p>
<pre class="language-php"><code>'simUploadLimit': 10,</code></pre>
<p>That uploads 10 files at a time - the rest queue up in the browser and go automatically, so your client can still select all 100 at once. It should take care of the hangs as well. After updating the .js file, have your client do a hard refresh (Ctrl+F5) so the browser picks up the new version.</p>
<p>Give that a try and let me know if that fixes it for your client. Thanks!</p>]]></description>
          <pubDate>Fri, 07 Aug 2026 15:42:51 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248464#post2248464</guid>
        </item>
                <item>
          <title>Can we change the order of the activity buttons at the top of CMSB interface (like on a record editing page)?</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248457#post2248457</link>
          <description><![CDATA[<p>Hi Codee,</p>
<p>Happy to help with this one. In v3.83 we standardized the button order across all the admin pages: destructive actions (like Erase) on the far left, and the primary action (Save) always on the far right with Cancel beside it. That follows the convention Mac, iOS, and Android all use, but I can see how a change like that would throw off someone who's had years of muscle memory with the old layout.</p>
<p>I've attached a plugin that restores the buttons to their previous order (Cancel, Erase, Preview, Save). Just upload it to your cmsb/plugins/ folder and activate it under Admin → Plugins.</p>
<p>If your customer wants a different arrangement, there's a single line at the top of the plugin you can edit:</p>
<pre class="language-php"><code>// Buttons appear left to right in the order below - rearrange as desired
// '*' is where buttons added by other plugins appear, e.g. "Save &amp; Copy".
$buttonOrder = ['cancel', 'Erase', 'preview', '*', '_action=save'];</code></pre>
<p>Rearrange those as desired. The '*' is where buttons added by other plugins (like Save &amp; Copy) appear.</p>
<p>And good news on the "keep it from future changes" part: the plugin re-sorts whatever buttons the CMS generates, so the order will stick through future updates.</p>
<p>Let me know if that works for him!</p>
<p>Dave</p>]]></description>
          <pubDate>Thu, 30 Jul 2026 16:33:59 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248457#post2248457</guid>
        </item>
                <item>
          <title>Free Plugin - Content Exporter</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248456#post2248456</link>
          <description><![CDATA[<p>Hi Kenny,&nbsp;</p>
<p>Just tried this out.&nbsp; It's really slick, nice work!&nbsp; And thanks for contributing.&nbsp; I'm sure a lot of people will find this helpful.</p>]]></description>
          <pubDate>Thu, 30 Jul 2026 16:09:56 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248456#post2248456</guid>
        </item>
                <item>
          <title>Confirmation not waiting when deleting sections</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248452#post2248452</link>
          <description><![CDATA[<p>Hi All,</p>
<p>Thanks for the report! We were able to reproduce this locally and track it down, and we'll have this fixed in the next release.</p>
<p>If you'd like to patch it now, edit cmsb/lib/data-attr-handlers.js and search for "element.blur()"</p>
<p>And replace this:</p>
<pre class="language-javascript"><code>                if (!confirm(message)) {
                    e.preventDefault();
                    e.stopImmediatePropagation();
                    element.blur();
                }
            }
        });</code></pre>
<p>With this (adding ", true" before the final brace):</p>
<pre class="language-javascript"><code>            if (!confirm(message)) {
                    e.preventDefault();
                    e.stopImmediatePropagation();
                    element.blur();
                }
            }
        }, true);</code></pre>
<p>That makes the confirmation dialog run before anything else, so Cancel works again.</p>
<p>Hope that helps, and thanks so much for the bug report and confirmation!&nbsp; Let me know if you any other questions.</p>]]></description>
          <pubDate>Thu, 09 Jul 2026 19:17:18 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248452#post2248452</guid>
        </item>
                <item>
          <title>Error: Data isn&apos;t compatible with new type</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248446#post2248446</link>
          <description><![CDATA[<p>Hi Kenny,</p>
<p>The issue is that a checkbox column doesn't support the same data types as a text box. A text box stores NULL by default (or an empty string once you've saved content), but a checkbox only supports 1 or 0, never NULL. It's the same even if the text box had real content in it, since MySQL can't map arbitrary text to a number.</p>
<p>If the field is empty, the easiest fix is to just erase it and create the checkbox fresh. Or you can convert the existing values to 0 first:</p>
<pre class="language-php"><code>UPDATE `your_table` SET `my_field` = 0 WHERE `my_field` IS NULL OR `my_field` = '';</code></pre>
<p>Once the data in the column matches what a checkbox supports (in MySQL: tinyint unsigned NOT NULL), it should let you switch the type with no problem.</p>
<p>Hope that helps!&nbsp; Let me know any questions.</p>]]></description>
          <pubDate>Mon, 29 Jun 2026 13:21:22 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248446#post2248446</guid>
        </item>
                <item>
          <title>Opcache Issue</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248444#post2248444</link>
          <description><![CDATA[<p>Hi mark99,&nbsp;</p>
<p>Okay, great.&nbsp; Glad it's working and thanks for the update!</p>]]></description>
          <pubDate>Mon, 29 Jun 2026 09:51:30 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248444#post2248444</guid>
        </item>
                <item>
          <title>MCP tools/list available when MCP is disabled?</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248442#post2248442</link>
          <description><![CDATA[<p>Hi Rob,&nbsp;</p>
<p>I found a quick fix for this.</p>
<p>In cmsb/api/mcp.php search for "// Dispatch" and replace it with the following:</p>
<pre class="language-php"><code>// Block all methods (no tool list, no dispatch) while the MCP server is disabled
mcpProtocolErrorIf(!isStillEnabled(), MCP_ERR_SERVER_DISABLED, 'MCP server is disabled. Enable it at Admin → Advanced → MCP Server');

// Dispatch</code></pre>
<p>That will prevent the MCP server from showing anything if it's not enabled.</p>
<p>Can you give that a try and let me know if that works for you?</p>
<p>Thanks!</p>]]></description>
          <pubDate>Sun, 28 Jun 2026 23:10:17 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248442#post2248442</guid>
        </item>
                <item>
          <title>Opcache Issue</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248441#post2248441</link>
          <description><![CDATA[<p>Hi Mark,</p>
<p>That is curious. I've attached a test script that shows whether OPcache is running and the key settings it's using (which php.ini is loaded, where PHP looks for the extension, and so on).</p>
<p>Can you run it from a location where OPcache is already working, and again from your cmsb folder, and let me know how the two differ?</p>
<p>It's also worth dropping it into a parallel directory (e.g.,/opcache_test/) to see if something in the CMSB .htaccess or config files is affecting it.</p>
<p>Let me know what you find. Thanks!</p>]]></description>
          <pubDate>Sun, 28 Jun 2026 21:48:16 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248441#post2248441</guid>
        </item>
                <item>
          <title>Database schema sync called on frontend</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248440#post2248440</link>
          <description><![CDATA[<p>Hiht1080z,</p>
<p>That notice just means the plugin is checking if it needs to create your accounts table on every page load. Newer CMSB versions save schema files as .schema.php, but your plugin is still looking for the old .ini.php files. It never finds them, so it assumes the table still needs creating and runs the full schema sync (and logs that notice) on every page view.</p>
<p>It's harmless, though, your table is fine, and logins work. It's just extra work each load, and your pages will load faster if you fix it. So a few options:</p>
<ul>
<li>Leave it. If the log noise doesn't bother you, ignore it. Nothing's broken.</li>
<li>Quick fix. Your accounts table already exists, so you can just comment out the createMissingSchemaTablesAndFields(); call on line 360 of your custom plugin.&nbsp;</li>
<li>Proper fix. Download the latest Website Membership, diff it against your custom file, and merge in the schema-file check, making sure it looks for .schema.php. The sync then skips on its own once the table's set up.</li>
</ul>
<p>Hope that helps, let me know any questions.</p>]]></description>
          <pubDate>Sun, 28 Jun 2026 21:25:37 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248440#post2248440</guid>
        </item>
                <item>
          <title>.ini files vs. ,schema</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248435#post2248435</link>
          <description><![CDATA[<p>Hi pgplast,&nbsp;</p>
<p>Yes, the CMS will automatically upgrade any .ini.php files it discovers.&nbsp; Even when adding plugins or ini files after the fact.&nbsp;&nbsp;</p>
<p>But if any of your plugins aren't working correctly, just download the latest version from the website.</p>
<p>Hope that helps!</p>]]></description>
          <pubDate>Tue, 23 Jun 2026 19:56:07 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248435#post2248435</guid>
        </item>
                <item>
          <title>MCP tools/list available when MCP is disabled?</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248434#post2248434</link>
          <description><![CDATA[<p>Hi Rob,</p>
<p>So, with fingerprinting, any static response or file (CSS, JS, images, etc.) can be used. You just need to checksum a known response from some files from a given version of any software. There are actually some neat sites that do that (search "What CMS is this site running").</p>
<p>So the best solution for that is just to rename your /cmsb/ folder to something less guessable so no one can find it.</p>
<p>And/or, if you don't need the /api/ folder or /api/mcp.php, you should be able to safely just delete them.</p>
<p>But we want the UX to feel good end-to-end, so if seeing a big list of powerful tools, disabled or not, gives anyone pause, we could look into adding a one-time setting to enable it.&nbsp; We have a few questions about it already.</p>
<p>Maybe the first time you open the MCP menu, we could have an option where you click to enable it, and until then, it returns nothing in the tools list.</p>
<p>Let me know if that would work for you. Thanks!</p>]]></description>
          <pubDate>Tue, 23 Jun 2026 19:54:05 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248434#post2248434</guid>
        </item>
                <item>
          <title>MCP tools/list available when MCP is disabled?</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248430#post2248430</link>
          <description><![CDATA[<p>Hi runriot,</p>
<p>Thanks for the report, and good eye. This one's intentional, not a leak.</p>
<p>The tool list is static. It's the same hardcoded list on every install, and it already ships in the source you can download, so tools/list isn't handing out anything you couldn't read straight from our freely downloadable code. The only things we hold back until you authenticate are install-specific hints, like the server's working directory, OS, and shell, since those would fingerprint the actual box. Nothing in the public list is install-specific or secret.</p>
<p>The real security boundary is on running tools, not listing them. That's exactly what you ran into: the list comes back, but the second you try to call a tool, you get "MCP is disabled." Disabled means disabled, nothing executes, and that holds whether MCP is switched off or the auth is missing or wrong.</p>
<p>The other reason we always return the list is so you don't have to restart Claude every time you toggle MCP. Claude grabs the tool list once when it connects and caches it. If we only sent the list while MCP was enabled, every on/off would mean restarting Claude to pick the tools back up. Keeping the static list always on means you can flip MCP on and off, and it just works, since the tools are already known and only execution changes.</p>
<p>So the short version: the listing is public by design; execution is locked down.<br /><br />This is also a common pattern for APIs built to be called by an external client. Plenty of public APIs serve their full OpenAPI/Swagger spec, every endpoint and parameter, to anyone, and gate only the actual calls behind a key.&nbsp;</p>
<p>Hope that helps, let me know if you have any other questions or concerns!</p>]]></description>
          <pubDate>Fri, 19 Jun 2026 08:37:58 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248430#post2248430</guid>
        </item>
                <item>
          <title>Exclude specific records from a list</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248427#post2248427</link>
          <description><![CDATA[<p>Hi Mark,&nbsp;</p>
<p>Try this:</p>
<pre class="language-php"><code>    'where'       =&gt; " category LIKE '%Telecoms%' AND num NOT IN (421,83,122)",</code></pre>
<p>Just replace the numbers with the ones you want to exclude.</p>
<p>Let me know if that works for you.</p>]]></description>
          <pubDate>Tue, 26 May 2026 08:54:31 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248427#post2248427</guid>
        </item>
                <item>
          <title>CMSB v3.84 Released (Show/Hide Fields &amp; MCP Server)</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248425#post2248425</link>
          <description><![CDATA[<p>UPDATE: If you got an error while upgrading, we've released v3.84 with a fix:<br /><a href="https://www.interactivetools.com/download/" rel="nofollow">https://www.interactivetools.com/download/</a></p>
<p>Here's the full changelog:&nbsp;</p>
<blockquote>
<pre>*** May 8, 2026 - Version 3.84 (Maintenance Release)<br /><br />SERVER REQUIREMENTS (Since Jun 2025): PHP 8.1+ and MySQL 5.7+ (or MariaDB 10.2+)<br /><br />BUG FIXES<br />    - Upgrade: Fixed an "Unknown column" error that could stop the upgrade partway through on older installs<br />        - Was caused by audit/error logging trying to write to columns the upgrade hadn't added yet<br />        - When the audit or error log can't write to its table, the failure and original message now go to data/_php_error.log instead<br />    - Developer Log: Displayed HTTP method now reads correctly from older error log entries logged in older format (was falling back to "CLI" before)</pre>
</blockquote>
<p>This is only needed if you got an error while upgrading or are upgrading from a much older version. If you already upgraded without issue, no action is required.</p>
<p>Let me know any questions. Thanks!</p>]]></description>
          <pubDate>Fri, 08 May 2026 20:15:50 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248425#post2248425</guid>
        </item>
                <item>
          <title>CMSB v3.83 Beta (Show/Hide Fields &amp; MCP Server)</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248424#post2248424</link>
          <description><![CDATA[<p>Hi All,&nbsp;</p>
<p>Thanks everyone for your feedback, posts, and emails.&nbsp; We've released v3.83 here:&nbsp;</p>
<p><a href="https://interactivetools.com/forum/forum-posts.php?CMSB-v3.83-Released-Show-Hide-Fields-MCP-Server-83137" rel="nofollow">https://interactivetools.com/forum/forum-posts.php?CMSB-v3.83-Released-Show-Hide-Fields-MCP-Server-83137</a></p>
<p>Thank you!</p>]]></description>
          <pubDate>Fri, 08 May 2026 13:51:09 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248424#post2248424</guid>
        </item>
                <item>
          <title>CMSB v3.84 Released (Show/Hide Fields &amp; MCP Server)</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248423#post2248423</link>
          <description><![CDATA[<p class="whitespace-pre-wrap break-words">Hi everyone,</p>
<p class="whitespace-pre-wrap break-words">We've just released v3.83 (our biggest single release to date!), and we're already running it on our site.</p>
<p class="whitespace-pre-wrap break-words">Here are some highlights from this release:&nbsp;</p>
<ul>
<li class="whitespace-pre-wrap break-words">Field Editor
<ul>
<li class="whitespace-pre-wrap break-words">Show If: New option allows you to dynamically show/hide fields based on the values of other fields</li>
<li class="whitespace-pre-wrap break-words">Show for: Replaces old "Admin only" setting with options for everyone, editor, admin only, or new: Nobody (completely hidden)</li>
<li class="whitespace-pre-wrap break-words">Placeholder: New option for text and textbox fields to set hint text inside the field when empty</li>
<li class="whitespace-pre-wrap break-words">Field List UI: Lock and eye icons now mark restricted and conditional fields in your field list</li>
<li class="whitespace-pre-wrap break-words">Reorganized and simplified the field editor UI</li>
</ul>
</li>
<li class="whitespace-pre-wrap break-words">Admin → Advanced → MCP Server
<ul>
<li>AI coding assistants like Claude Code can now read and update your CMS directly</li>
<li>Read and write records, upload files, run queries, and view your database schema</li>
<li>Built-in /fix-cms command: AI reviews your recent PHP errors and offers fixes</li>
</ul>
</li>
<li class="whitespace-pre-wrap break-words">Admin → Backup &amp; Restore → Website → Restore from Zip
<ul>
<li>Added restore button to restore from previous website backup zips (for uploading a local or dev site)</li>
</ul>
</li>
<li class="whitespace-pre-wrap break-words">Fields → List →&nbsp;<span>pillbox (multi value)</span>
<ul>
<li>Selected values can now be drag sorted to change the order</li>
<li>Dropdown options show checkboxes to select multiple values (easier for end-users)</li>
</ul>
</li>
<li class="whitespace-pre-wrap break-words">Admin → Advanced
<ul>
<li>Admin Favicon: Pick a colored favicon (green/yellow/red) to tell CMS installs apart in your browser tabs (e.g. dev, staging, live)</li>
<li>Server Links: Add dev, staging, and live server URLs for quick-switching between environments</li>
</ul>
</li>
<li class="whitespace-pre-wrap break-words">Developer Console
<ul>
<li>Automatically decrypts and displays contents from encrypted fields</li>
</ul>
</li>
<li class="whitespace-pre-wrap break-words">General code modernization and cleanup</li>
</ul>
<p>Note: We still have a queue of pending user feature requests.&nbsp; We're releasing what we have now so you can start using it.&nbsp; Feel free to remind us what you'd like to see next.&nbsp;</p>
<p>The full changelog for this release is as follows:</p>
<blockquote>
<pre>*** May 8, 2026 - Version 3.83 (Show/Hide Fields &amp; MCP Server)<br /><br />SERVER REQUIREMENTS (Since Jun 2025): PHP 8.1+ and MySQL 5.7+ (or MariaDB 10.2+)<br /><br />FIELD EDITOR<br />    - Show/Hide Fields: Fields now show/hide automatically based on what users select<br />        - Example: Show "Speaker Name" only when Event Type is "Webinar"<br />        - Example: Show "Shipping Address" only when Delivery Method is "Mail"<br />        - Works with all field types: text, checkboxes, tabs, upload fields, related records<br />        - Custom expressions allow for multi-field AND rules (e.g. type=article AND status!=draft|hidden)<br />        - Configure in: Database &gt; Edit Field &gt; Visibility &gt; Show If<br />    - Field Access: "Admin Only" replaced with clearer "Show for" dropdown<br />        - Options: Everyone, Editor and above, Admin only, or new: Nobody (completely hidden)<br />        - ***Behavior change***: List view now hides restricted fields as well (previously didn't)<br />    - Placeholder: New option for text and textbox fields to set hint text inside the field when empty<br />    - Lock and eye icons now mark restricted and conditional fields in your field list<br />    - Simplified field editor interface with cleaner organization<br />    - Textbox Fields: "Auto Format" renamed to "Line Breaks" (nl2br) and deprecated.<br />         - Off by default for new fields; existing fields can be turned off, but not re-enabled<br /><br />MCP SERVER<br />    - AI coding assistants like Claude Code can now read and update your CMS directly<br />    - Read and write records, upload files, run queries, and view your database schema<br />    - Configure in: Admin &gt; Advanced &gt; MCP Server (IP allowlist, API keys, permissions)<br />    - Built-in /fix-cms command: AI reviews your recent PHP errors and offers fixes<br />    - Security: IP allowlist required, Bearer token auth, read-only enforced at MySQL session level<br />    - Write operations logged to the audit log<br /><br />ADMIN &gt; BACKUP &amp; RESTORE<br />    - Website: Added restore button to restore from previous website backup zips<br />    - Website: Previous Backups dropdown now shows relative dates (e.g., "5 min ago", "yesterday")<br />    - Website: Removed "Only include code files" option (use .cms-no-backup marker files to exclude folders instead)<br />    - Database: Backup dropdown now offers option to include log tables in backup ("include skipped")<br /><br />PILLBOX &amp; FOREIGN KEY FIELDS<br />    - Replaced form dropdown component Select2 with Tom Select<br />    - Pillbox: drag pills to reorder selected values<br />    - Pillbox: dropdown options show checkboxes so you can see all options and their selection state at a glance<br />    - Type-ahead search to filter options instantly<br /><br />ADMIN &gt; ADVANCED (New Page)<br />    - Reorganized admin settings into "Admin Interface" and "Advanced Settings" sections<br />    - Admin Favicon: Pick a colored favicon (green/yellow/red) to tell CMS installs apart in your browser tabs<br />    - Server Links: Add dev, staging, and live server URLs for quick-switching between environments<br />    - Admin Shortcuts, Debug Footer, and WYSIWYG/Menu/Cookie settings moved here from General Settings<br /><br />MINOR CHANGES<br />    - Email Settings: Developer Email now accepts multiple comma-separated addresses<br />    - File Uploads: Files are saved with dashes instead of underscores for better SEO, and .jpeg is normalized to .jpg<br />    - Audit Log: Expanded logging coverage for fields, tables, uploads, backups, and database operations<br />    - Security: Added additional .htaccess hardening for data directories (Apache 2.4+ compatibility)<br />    - PHP 8.5: Silenced deprecation warning by disabling unneeded register_argc_argv directive in shipped php.ini, .htaccess, and .user.ini<br />    - Improved text contrast for input fields, selects, and placeholders<br />    - Admin menus updated and reorganized for better usability<br />    - Upgraded Dependencies: PHPMailer v6 to v7, Firebase/JWT v6 to v7, and other library updates<br /><br />BUG FIXES<br />    - SmartArray: Fixed TypeError when calling load() on SmartArrayHtml (changed type hint to SmartArrayBase)<br />    - Language: Fixed "No such file or directory" error when developer mode was enabled without a language selected<br />    - Upload Fields: Fixed "Create Thumbnail" checkbox re-enabling itself after saving when unchecked<br />    - Edit Page: Fixed false "unsaved changes" warning appearing after clicking in fields without editing them<br />    - Misc code and other minor improvements<br /><br />**FOR PROGRAMMERS**<br />    - Modern PHP features enabled:<br />        - Native types: Database queries now return native PHP types (int/float) instead of strings<br />        - mysqli::execute_query() for one-line parameterized queries (available natively in PHP 8.2+, backported for PHP 8.1):<br />            $rows = DB::$mysqli-&gt;execute_query("SELECT * FROM users WHERE id = ?", [$id])-&gt;fetch_all(MYSQLI_ASSOC);<br />            DB::$mysqli-&gt;execute_query("UPDATE users SET name = ? WHERE id = ?", [$name, $id]);<br />    - Database Encryption: Key now cached as MySQL session variable @ek<br />        - Faster: Computed once per-connection, not per-query<br />        - Simpler: AES_ENCRYPT(val, @ek) instead of AES_ENCRYPT(val, UNHEX(SHA2('key',512)))<br />        - Cleaner: Key hidden from SHOW PROCESSLIST and error messages<br />        - On-demand: Only initialized when encrypted fields are used<br />    - MySQL Console: Record edit page database icon now opens console with that record in column mode<br />    - MySQL Console: New {{column}} shortcut auto-expands to AES_DECRYPT(`column`, @ek) for encrypted columns<br />    - Moved /api.php to /api/ to better organize future API endpoints<br /><br />**FOR PROGRAMMERS (BREAKING CHANGES)**<br />    - Note: These changes only impact developers who have written custom PHP code<br />    - Database queries now return native PHP types (int/float) instead of strings<br />        - If your code expects strings, cast them: (string)$row['id']<br />    - MySQL queries now throw exceptions instead of returning false (following PHP 8.1+ standard behavior).<br />        - Before: $result = mysqli()-&gt;query($sql) or die("MySQL Error: " . mysqli()-&gt;error);<br />        - After:  try { $result = mysqli()-&gt;query($sql); } catch (mysqli_sql_exception $e) { die("MySQL Error: " . $e-&gt;getMessage()); }<br />    - Library Updates: ZenDB has been moved to composer with several renamed and deprecated methods<br />        - DB::get() renamed to DB::selectOne() (DB::get() still works but is deprecated)<br />        - See ZenDB docs for full list of changes: <a href="https://github.com/interactivetools-com/ZenDB/" rel="nofollow">https://github.com/interactivetools-com/ZenDB/</a></pre>
</blockquote>
<p>You can download the latest version here: <a href="https://www.interactivetools.com/download/" rel="nofollow">https://www.interactivetools.com/download/</a></p>
<p>Please feel free to ask any questions or post any feedback or comments.</p>
<p>Thank you!</p>]]></description>
          <pubDate>Fri, 08 May 2026 13:50:31 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248423#post2248423</guid>
        </item>
                <item>
          <title>CMSB v3.83 Beta (Show/Hide Fields &amp; MCP Server)</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248422#post2248422</link>
          <description><![CDATA[<p>Hi everyone,</p>
<p>We've just posted Beta 2 (build 3126). Thanks to everyone who's been posting and sending in feedback and bug reports on Beta 1.</p>
<p>Here's what's new:</p>
<p><strong>MCP Server</strong></p>
<ul>
<li><strong>New auto-disable timer </strong>-The MCP Server can now be enabled with an auto-disable timer (15 min / 1 hour / 8 hours). The server turns itself off automatically when the timer expires, so you can safely turn it on for a coding session and not have to remember to switch it off afterward. Configure in: Admin → Advanced → MCP Server.</li>
<li><span><strong>Execute Access </strong>- This allows AI to read the server filesystem, run shell commands, and execute PHP.&nbsp; This is incredibly powerful for quickly diagnosing server issues, but be sure to backup first, manually approve everything but read-only commands, and actively monitor AI agents using it.</span></li>
</ul>
<p><strong>Show/Hide Fields Polish</strong></p>
<ul>
<li><strong>Custom Expressions:</strong> OR rules now supported, e.g.: type=article|review AND published=1 OR alwaysShow=1 (mouse over the custom expression field for a pop-up with instructions)</li>
</ul>
<p><strong>Plus lots of bug fixes and minor improvements.</strong></p>
<p>You can download the latest beta <a>here:https://www.interactivetools.com/download/</a></p>
<p>Send over any other issues you find. We're aiming to release this in the next few days if no further issues are reported.</p>
<p>Thanks!</p>]]></description>
          <pubDate>Tue, 05 May 2026 22:59:29 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248422#post2248422</guid>
        </item>
                <item>
          <title>CMSB v3.83 Beta (Show/Hide Fields &amp; MCP Server)</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248421#post2248421</link>
          <description><![CDATA[<p>Hi 4cdg,&nbsp;</p>
<p>It's the new "default," but you store your uploads wherever you want, and you don't need to change it for existing sites.</p>
<p>Some of the reasons for the change are to prevent upload paths from revealing the url of your cmsb admin, shorter/nicer urls, and making it easier to backup just the /cmsb/ folder without a very large uploads subfolder.</p>


]]></description>
          <pubDate>Tue, 05 May 2026 17:43:08 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248421#post2248421</guid>
        </item>
                <item>
          <title>CMSB v3.83 Beta (Show/Hide Fields &amp; MCP Server)</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248420#post2248420</link>
          <description><![CDATA[<p>Hi KennyH,&nbsp;</p>
<p>Thanks for double-checking!&nbsp; That happens to me all the time.</p>

]]></description>
          <pubDate>Tue, 05 May 2026 17:40:14 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248420#post2248420</guid>
        </item>
                <item>
          <title>Media Library</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248417#post2248417</link>
          <description><![CDATA[<p>Hi moh3,&nbsp;</p>
<p>Sorry for the delay in responding.&nbsp; If you're still working on this, you can change the custom upload dir for media files here:&nbsp;<br />admin.php?menu=database&amp;action=editField&amp;tableName=_media&amp;fieldname=media</p>
<p>Hope that helps!</p>]]></description>
          <pubDate>Mon, 04 May 2026 14:35:25 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248417#post2248417</guid>
        </item>
                <item>
          <title>Show future dates only in CMS section</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248416#post2248416</link>
          <description><![CDATA[<p>Hi celuch,</p>
<p>There's no built-in way to permanently hide past records from the editor list. That one needs a small custom plugin (or code change).</p>
<p>Try saving this in your /plugins/ folder as futureDatesOnly.php (or something similar):</p>
<pre class="language-php"><code>&lt;?php
/*
Plugin Name: Future Dates Only
Description: Hides past-dated records from a section's editor list, so users only see upcoming records.
Version: 1.00
*/

use Itools\Cmsb\Plugin;

Plugin::on('list_where', function (string $where, string $table): string {
    $forTable  = 'events';
    $dateField = 'event_date';
    if ($table === $forTable) {
        $where = "($where) AND `$dateField` &gt;= CURDATE()";
    }
    return $where;
});
</code></pre>
<p>Just change $forTable and $dateField to match your table and field.</p>
<p>Hope that helps, let me know any questions.</p>
<p>Thanks!</p>]]></description>
          <pubDate>Mon, 04 May 2026 14:34:03 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248416#post2248416</guid>
        </item>
              </channel>
    </rss>
  