<?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+R</link>
        <description></description>
        <pubDate>Tue, 09 Jun 2026 15:05:55 -0700</pubDate>
        <language>en-us</language>
        <atom:link href="https://interactivetools.com/forum/forum-search.php?k=user%3ADave+R&amp;rss=1" rel="self" type="application/rss+xml" />

                <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>
                <item>
          <title>CMSB v3.83 Beta (Show/Hide Fields &amp; MCP Server)</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248414#post2248414</link>
          <description><![CDATA[<p>Hi Kenny,&nbsp;</p>
<p>You can manually add that feature back by adding either of these to the field schema:&nbsp;</p>
<ul>
<li>'autoFormat' =&gt; 1,&nbsp;</li>
<li>'nl2br' =&gt; 1, (new name)</li>
</ul>
<p>We're removing it because we want to standardize on either text or HTML, and that field type is a mix of both.&nbsp; So we can't fully html encode it, or treat it as text.&nbsp; For fully text fields you can get the same effect in the viewers with echo nl2br(htmlencode($record['name']));</p>
<p>You said the &lt;br&gt; tags didn't get removed.&nbsp; Could you email or post a screenshot of the data with the &lt;br&gt; tags from the MySQL Console (see attached example) so I can see what the pattern is that didn't get replaced?&nbsp; I can then work on a fix for that.</p>
<p>Thank you!</p>]]></description>
          <pubDate>Thu, 30 Apr 2026 10:24:10 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248414#post2248414</guid>
        </item>
                <item>
          <title>CMSB v3.83 Beta (Show/Hide Fields &amp; MCP Server)</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248411#post2248411</link>
          <description><![CDATA[<p>Hi Kenny,&nbsp;</p>
<p>Thanks for the feedback.&nbsp;&nbsp;</p>
<p>In general, we write to the spec, but optimize for the client application and user experience.&nbsp; Same as when new HTML features are in that spec, but not fully supported by the browsers.</p>
<p>So for this first release, we're targeting the latest release of Claude Code and whatever makes our workflow fastest with it.&nbsp; If anyone has another AI agent we can make work with a few adjustments, we'd be happy to do that as well.</p>
<p>Some updates:&nbsp;</p>
<ul>
<li>MCP tools now all return generic info (nothing server-specific).&nbsp; If you are token and IP-authenticated, they'll add some server hints for the agent.</li>
<li>cmsApiSearch errors: Good catch!&nbsp; Those are unreleased future libraries that we're not including yet, and they shouldn't be referenced or cause errors.&nbsp; Fixed.</li>
<li>JSON-RPC errors: These were killing the AI session previously (requiring a restart) and not allowing us to pass info back to the user, but they're working now, so we'll switch back to them.&nbsp; Our key requirement here is relaying setup hints to the user (e.g. your IP doesn't match or you need to enable a setting) rather than having them dig through logs.</li>
<li>protocolVersion: We only list the latest version because that's the only one we're targeting and supporting.&nbsp; I think we can go one further back, though, so I've updated it to this range ('2025-11-25', '2025-06-18')</li>
<li>selectOne silently coerces string → int: MySQL also coerces strings to ints, so it still works.&nbsp; I'm not aware of a case where this would cause an issue.&nbsp; But we'll add some error checking.</li>
</ul>
<p>We'll have these in the next beta.&nbsp;</p>
<p>Let me know any questions, or other feedback.&nbsp; Thanks!</p>]]></description>
          <pubDate>Thu, 23 Apr 2026 18:08:34 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248411#post2248411</guid>
        </item>
                <item>
          <title>issue with linked (lookup) columns.</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248408#post2248408</link>
          <description><![CDATA[<p>Hi David,&nbsp;</p>
<p>Search on linked fields is a current limitation and something we hope to address in future.</p>
<p>You might be able to add a search pulldown at the top of the page for it, though.&nbsp; Under Database Editor &gt; Search fields: Add something like: Document Lines|document_lines|match</p>
<p>Or you can write (or update) some custom code to populate a text field with the linked value, so you have something to search on.</p>
]]></description>
          <pubDate>Sun, 19 Apr 2026 22:44:47 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248408#post2248408</guid>
        </item>
                <item>
          <title>Theme Engine</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248407#post2248407</link>
          <description><![CDATA[<p>Hi moh3,</p>
<p>Thanks for sharing this with the community and for the kind words about CMSB. That's a serious amount of work to put together and offer up.</p>
<p>Appreciate the contribution!</p>]]></description>
          <pubDate>Sun, 19 Apr 2026 22:34:24 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248407#post2248407</guid>
        </item>
                <item>
          <title>CMSB v3.83 Beta (Show/Hide Fields &amp; MCP Server)</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248405#post2248405</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 beta (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 → <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>*** April 14, 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 />    - 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. Off for new fields, can be turned off but not back on<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 />    - 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 beta here: <a href="https://www.interactivetools.com/download/" rel="nofollow">https://www.interactivetools.com/download/</a></p>
<p>Please post (or email) any feedback, questions, concerns, or bugs you find.&nbsp; &nbsp;Your help with beta testing allows us to release new features even faster.</p>
<p><span>Thanks. We look forward to your feedback! :)</span></p>]]></description>
          <pubDate>Tue, 14 Apr 2026 12:53:50 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248405#post2248405</guid>
        </item>
                <item>
          <title>Update to CMSB v. 8 from 3.56</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248404#post2248404</link>
          <description><![CDATA[<p>Hi pgplast,</p>
<p>Okay, perfect. Since you've done the CMS upgrade before, the CMSB side should be straightforward.</p>
<p>For any custom PHP code or plugins, the most common issue is type handling. PHP 7 was more forgiving - it would silently accept `null` where a string was expected. PHP 8 throws deprecation warnings (and PHP 9 will make them errors).</p>
<p>An example might be @$_REQUEST['city']; if that form field wasn't submitted, it would return null.</p>
<p>So if you see warnings like `trim(): Passing null to parameter #1` or `strlen(): Passing null to parameter #1 ($string) of type string is deprecated`, the fix is usually one of:</p>
<pre class="language-php"><code>// Option A: null coalesce to set a default for null values
$value = trim($record['middle_name'] ?? '');

// Option B: cast to string
$value = strlen((string) $record['notes']);</code></pre>
<p>What I recommend is upgrading, then clicking through all the pages and checking the CMS Developer for any errors.</p>
<p>Let me know if you run into anything specific, and we can help you sort it out.</p>]]></description>
          <pubDate>Sat, 11 Apr 2026 00:03:53 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248404#post2248404</guid>
        </item>
                <item>
          <title>Update to CMSB v. 8 from 3.56</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248401#post2248401</link>
          <description><![CDATA[<p>Hi pgplast,</p>
<p>First, make sure your database is supported by the latest version - you'll want MySQL 5.7+ or MariaDB 10.2+.</p>
<p>But in general, it's pretty straightforward. Backup everything (files and MySQL), upload the new CMSB files over top of the old ones, then upgrade any plugins that need upgrading.</p>
<p>If you run into any PHP 7 to 8 coding errors in your custom code, any of the AI coding agents (Claude, ChatGPT, etc.) can help you come up with a fix pretty quickly.</p>
<p>That said, feel free to fill out a 2nd-level support request if you'd like me to take a look either before or after: <a href="https://interactivetools.com/support/request/" rel="nofollow">https://interactivetools.com/support/request/</a></p>
<p>Also, feel free to email me at dave@interactivetools.com if you run into any issues. I'll be around this weekend and can help make sure you're back up and running by Monday if needed.</p>
<p>Hope that helps, let me know any questions!</p>]]></description>
          <pubDate>Fri, 10 Apr 2026 13:50:55 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248401#post2248401</guid>
        </item>
                <item>
          <title>Upload Field - Custom List Option</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248382#post2248382</link>
          <description><![CDATA[<p>Hi Ryan,&nbsp;</p>
<p>Unfortunately, there's no built-in functionality for that, or quick fixes.</p>
<p>Can you let me know what you want to use it for and how you'd want it to work?&nbsp;</p>
<p>For example, what problem are you trying to solve?</p>
<p>Thanks!</p>]]></description>
          <pubDate>Wed, 11 Mar 2026 21:05:46 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248382#post2248382</guid>
        </item>
                <item>
          <title>editor feature request</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248381#post2248381</link>
          <description><![CDATA[<p>Hi Jeff,&nbsp;</p>
<p>We're currently working on a big update for the next release, but I can keep this in the queue for a future release.</p>
<p>We actually wanted to redo the date component already for better multi-lingual support.</p>
<p>The browser date fields are generally considered not to have the best user experience compared to some of the custom ones.&nbsp; &nbsp;</p>
<p>The benefit of the multi-field is that it's quick to select, but it depends on your use case, though.&nbsp; You'll see most of the big sites (airbnb, google flights, etc) use custom date controls.&nbsp; We were looking into some of the more popular date field components a while back.</p>
<p>We've already got some requests for Date field modifications already. &nbsp;Can you let me know how you'd like it to work differently so we can consider that as well?</p>
<p>Thanks!</p>
]]></description>
          <pubDate>Wed, 11 Mar 2026 21:04:10 -0700</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248381#post2248381</guid>
        </item>
                <item>
          <title>BUG: tinymce field can&apos;t use media library image CMSB 3.82</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248378#post2248378</link>
          <description><![CDATA[<p>Hi all,&nbsp;</p>
<p>This took us a bit to track down.&nbsp; Can you try this fix:&nbsp;</p>
<p>In /cmsb/lib/menus/default\wysiwygMedia.php</p>
<p>Replace this:&nbsp;</p>
<pre class="language-javascript"><code>uploadIframe.contentDocument.location.reload();</code></pre>
<p>With this:&nbsp;</p>
<pre class="language-javascript"><code>uploadIframe?.contentDocument?.location.reload();</code></pre>
<p>Let me know if that works for you.&nbsp; If not, feel free to submit a 2nd level support request, and we'd be happy to help you track it down and resolve it.</p>
<p>Thanks!</p>]]></description>
          <pubDate>Sat, 07 Mar 2026 21:36:58 -0800</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248378#post2248378</guid>
        </item>
                <item>
          <title>Error: Cannot access offset of type string on string</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248346#post2248346</link>
          <description><![CDATA[<p>Hi Gary,&nbsp;</p>
<p>Can you submit a 2nd-level support request?&nbsp; We'll take a look and resolve this for you:&nbsp;</p>
<p><a href="https://interactivetools.com/support/request/" rel="nofollow">https://interactivetools.com/support/request/</a></p>
<p>Thanks!</p>]]></description>
          <pubDate>Sun, 22 Feb 2026 13:56:01 -0800</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248346#post2248346</guid>
        </item>
                <item>
          <title>BUG: tinymce field can&apos;t use media library image CMSB 3.82</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248345#post2248345</link>
          <description><![CDATA[<p>Hi all,&nbsp;</p>
<p>Thanks, we'll look into this and get back to you shortly.</p>]]></description>
          <pubDate>Sun, 22 Feb 2026 13:54:29 -0800</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248345#post2248345</guid>
        </item>
                <item>
          <title>Possible issue with CMSB 3.82 + Newsletter Builder (PHP 8 date() error)</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248344#post2248344</link>
          <description><![CDATA[<p>Hi Jeff,&nbsp;</p>
<p>This will be easier for us to confirm and debug on your server directly.&nbsp; Can you send in a 2nd level support request, and we'll take a look?</p>
<p><a href="https://interactivetools.com/support/request/" rel="nofollow">https://interactivetools.com/support/request/</a></p>
<p>Thanks!</p>]]></description>
          <pubDate>Sun, 22 Feb 2026 13:52:39 -0800</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248344#post2248344</guid>
        </item>
                <item>
          <title>Feature Request: Editor, images and media </title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248343#post2248343</link>
          <description><![CDATA[<p>Hi jasmar222,&nbsp;</p>
<p>Thanks for the suggestion.&nbsp; That makes sense. We'll take a look at that for a future release to see how we can improve the UX.</p>]]></description>
          <pubDate>Sun, 22 Feb 2026 13:49:33 -0800</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248343#post2248343</guid>
        </item>
                <item>
          <title>Repeater Field</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248342#post2248342</link>
          <description><![CDATA[<p>Hi Codee,&nbsp;</p>
<p>We're busy working on the next release, which is probably 1-2 weeks out before the beta, but can revisit repeater fields in the future.</p>
<p>Can you give me an example use case?&nbsp; How you'd actually be using it.&nbsp; e.g., What's a real-world example of some fields you'd be repeating?&nbsp;</p>]]></description>
          <pubDate>Sun, 22 Feb 2026 13:46:36 -0800</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248342#post2248342</guid>
        </item>
                <item>
          <title>Repeater Field</title>
          <link>https://interactivetools.com/forum/forum-posts.php?postNum=2248341#post2248341</link>
          <description><![CDATA[<p>Hi Codee,&nbsp;</p>
<p>We're busy working on the next release, which is probably 1-2 weeks out before the beta, but can revisit repeater fields in the future.</p>
<p>Can you give me an example use case?&nbsp; How you'd actually be using it.&nbsp; e.g., What's a real-world example of some fields you'd be repeating?&nbsp;</p>]]></description>
          <pubDate>Sun, 22 Feb 2026 13:46:35 -0800</pubDate>
          <guid isPermaLink="true">forum-posts.php?postNum=2248341#post2248341</guid>
        </item>
              </channel>
    </rss>
  