CMSB v3.83 Beta (Show/Hide Fields & MCP Server)

11 posts by 3 authors in: Forums > CMS Builder
Last Post: May 8   (RSS)

By Dave - April 14 - edited: April 14

Hi everyone,

We've just released v3.83 beta (our biggest single release to date!), and we're already running it on our site.

Here are some highlights from this release: 

  • Field Editor
    • Show If: New option allows you to dynamically show/hide fields based on the values of other fields
    • Show for: Replaces old "Admin only" setting with options for everyone, editor, admin only, or new: Nobody (completely hidden)
    • Placeholder: New option for text and textbox fields to set hint text inside the field when empty
    • Field List UI: Lock and eye icons now mark restricted and conditional fields in your field list
    • Reorganized and simplified the field editor UI
  • Admin → Advanced → MCP Server
    • AI coding assistants like Claude Code can now read and update your CMS directly
    • Read and write records, upload files, run queries, and view your database schema
    • Built-in /fix-cms command: AI reviews your recent PHP errors and offers fixes
  • Admin → Backup & Restore → Website → Restore from Zip
    • Added restore button to restore from previous website backup zips (for uploading a local or dev site)
  • Fields → List → pillbox (multi value)
    • Selected values can now be drag sorted to change the order
    • Dropdown options show checkboxes to select multiple values (easier for end-users)
  • Admin → Advanced
    • Admin Favicon: Pick a colored favicon (green/yellow/red) to tell CMS installs apart in your browser tabs (e.g. dev, staging, live)
    • Server Links: Add dev, staging, and live server URLs for quick-switching between environments
  • Developer Console
    • Automatically decrypts and displays contents from encrypted fields
  • General code modernization and cleanup

Note: We still have a queue of pending user feature requests.  We're releasing what we have now so you can start using it.  Feel free to remind us what you'd like to see next. 

The full changelog for this release is as follows:

*** April 14, 2026 - Version 3.83 (Show/Hide Fields & MCP Server)

SERVER REQUIREMENTS (Since Jun 2025): PHP 8.1+ and MySQL 5.7+ (or MariaDB 10.2+)

FIELD EDITOR
- Show/Hide Fields: Fields now show/hide automatically based on what users select
- Example: Show "Speaker Name" only when Event Type is "Webinar"
- Example: Show "Shipping Address" only when Delivery Method is "Mail"
- Works with all field types: text, checkboxes, tabs, upload fields, related records
- Custom expressions allow for multi-field AND rules (e.g. type=article AND status!=draft|hidden)
- Configure in: Database > Edit Field > Visibility > Show If
- Field Access: "Admin Only" replaced with clearer "Show for" dropdown
- Options: Everyone, Editor and above, Admin only, or new: Nobody (completely hidden)
- Placeholder: New option for text and textbox fields to set hint text inside the field when empty
- Lock and eye icons now mark restricted and conditional fields in your field list
- Simplified field editor interface with cleaner organization
- Textbox Fields: "Auto Format" renamed to "Line Breaks" (nl2br) and deprecated. Off for new fields, can be turned off but not back on

MCP SERVER
- AI coding assistants like Claude Code can now read and update your CMS directly
- Read and write records, upload files, run queries, and view your database schema
- Configure in: Admin > Advanced > MCP Server (IP allowlist, API keys, permissions)
- Built-in /fix-cms command: AI reviews your recent PHP errors and offers fixes
- Security: IP allowlist required, Bearer token auth, read-only enforced at MySQL session level
- Write operations logged to the audit log

ADMIN > BACKUP & RESTORE
- Website: Added restore button to restore from previous website backup zips
- Website: Previous Backups dropdown now shows relative dates (e.g., "5 min ago", "yesterday")
- Website: Removed "Only include code files" option (use .cms-no-backup marker files to exclude folders instead)
- Database: Backup dropdown now offers option to include log tables in backup ("include skipped")

PILLBOX & FOREIGN KEY FIELDS
- Replaced form dropdown component Select2 with Tom Select
- Pillbox: drag pills to reorder selected values
- Pillbox: dropdown options show checkboxes so you can see all options and their selection state at a glance
- Type-ahead search to filter options instantly

ADMIN > ADVANCED (New Page)
- Reorganized admin settings into "Admin Interface" and "Advanced Settings" sections
- Admin Favicon: Pick a colored favicon (green/yellow/red) to tell CMS installs apart in your browser tabs
- Server Links: Add dev, staging, and live server URLs for quick-switching between environments
- Admin Shortcuts, Debug Footer, and WYSIWYG/Menu/Cookie settings moved here from General Settings

MINOR CHANGES
- Email Settings: Developer Email now accepts multiple comma-separated addresses
- File Uploads: Files are saved with dashes instead of underscores for better SEO, and .jpeg is normalized to .jpg
- Audit Log: Expanded logging coverage for fields, tables, uploads, backups, and database operations
- Security: Added additional .htaccess hardening for data directories (Apache 2.4+ compatibility)
- Improved text contrast for input fields, selects, and placeholders
- Admin menus updated and reorganized for better usability
- Upgraded Dependencies: PHPMailer v6 to v7, Firebase/JWT v6 to v7, and other library updates

BUG FIXES
- SmartArray: Fixed TypeError when calling load() on SmartArrayHtml (changed type hint to SmartArrayBase)
- Language: Fixed "No such file or directory" error when developer mode was enabled without a language selected
- Upload Fields: Fixed "Create Thumbnail" checkbox re-enabling itself after saving when unchecked
- Edit Page: Fixed false "unsaved changes" warning appearing after clicking in fields without editing them
- Misc code and other minor improvements

**FOR PROGRAMMERS**
- Modern PHP features enabled:
- Native types: Database queries now return native PHP types (int/float) instead of strings
- mysqli::execute_query() for one-line parameterized queries (available natively in PHP 8.2+, backported for PHP 8.1):
$rows = DB::$mysqli->execute_query("SELECT * FROM users WHERE id = ?", [$id])->fetch_all(MYSQLI_ASSOC);
DB::$mysqli->execute_query("UPDATE users SET name = ? WHERE id = ?", [$name, $id]);
- Database Encryption: Key now cached as MySQL session variable @ek
- Faster: Computed once per-connection, not per-query
- Simpler: AES_ENCRYPT(val, @ek) instead of AES_ENCRYPT(val, UNHEX(SHA2('key',512)))
- Cleaner: Key hidden from SHOW PROCESSLIST and error messages
- On-demand: Only initialized when encrypted fields are used
- MySQL Console: Record edit page database icon now opens console with that record in column mode
- MySQL Console: New {{column}} shortcut auto-expands to AES_DECRYPT(`column`, @ek) for encrypted columns
- Moved /api.php to /api/ to better organize future API endpoints

**FOR PROGRAMMERS (BREAKING CHANGES)**
- Note: These changes only impact developers who have written custom PHP code
- Database queries now return native PHP types (int/float) instead of strings
- If your code expects strings, cast them: (string)$row['id']
- MySQL queries now throw exceptions instead of returning false (following PHP 8.1+ standard behavior).
- Before: $result = mysqli()->query($sql) or die("MySQL Error: " . mysqli()->error);
- After: try { $result = mysqli()->query($sql); } catch (mysqli_sql_exception $e) { die("MySQL Error: " . $e->getMessage()); }
- Library Updates: ZenDB has been moved to composer with several renamed and deprecated methods
- DB::get() renamed to DB::selectOne() (DB::get() still works but is deprecated)
- See ZenDB docs for full list of changes: https://github.com/interactivetools-com/ZenDB/

You can download the latest beta here: https://www.interactivetools.com/download/

Please post (or email) any feedback, questions, concerns, or bugs you find.   Your help with beta testing allows us to release new features even faster.

Thanks. We look forward to your feedback! :)

Dave Edis - Senior Developer
interactivetools.com

By Dave - April 23

Hi Kenny, 

Thanks for the feedback.  

In general, we write to the spec, but optimize for the client application and user experience.  Same as when new HTML features are in that spec, but not fully supported by the browsers.

So for this first release, we're targeting the latest release of Claude Code and whatever makes our workflow fastest with it.  If anyone has another AI agent we can make work with a few adjustments, we'd be happy to do that as well.

Some updates: 

  • MCP tools now all return generic info (nothing server-specific).  If you are token and IP-authenticated, they'll add some server hints for the agent.
  • cmsApiSearch errors: Good catch!  Those are unreleased future libraries that we're not including yet, and they shouldn't be referenced or cause errors.  Fixed.
  • 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.  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.
  • protocolVersion: We only list the latest version because that's the only one we're targeting and supporting.  I think we can go one further back, though, so I've updated it to this range ('2025-11-25', '2025-06-18')
  • selectOne silently coerces string → int: MySQL also coerces strings to ints, so it still works.  I'm not aware of a case where this would cause an issue.  But we'll add some error checking.

We'll have these in the next beta. 

Let me know any questions, or other feedback.  Thanks!

Dave Edis - Senior Developer
interactivetools.com

By KennyH - April 29 - edited: May 1

In 3.83 Beta - I am not finding the textbox option to not insert <br> tags. I saw a button appear that asked if I wanted to remove them and I clicked it. It didn't remove the tags from the 1 entry I saved. I went to the schema and can't find that option any longer.

Thanks,

Kenny H

By Dave - April 30

Hi Kenny, 

You can manually add that feature back by adding either of these to the field schema: 

  • 'autoFormat' => 1, 
  • 'nl2br' => 1, (new name)

We're removing it because we want to standardize on either text or HTML, and that field type is a mix of both.  So we can't fully html encode it, or treat it as text.  For fully text fields you can get the same effect in the viewers with echo nl2br(htmlencode($record['name']));

You said the <br> tags didn't get removed.  Could you email or post a screenshot of the data with the <br> tags from the MySQL Console (see attached example) so I can see what the pattern is that didn't get replaced?  I can then work on a fix for that.

Thank you!

Dave Edis - Senior Developer
interactivetools.com
Attachments:

textbox_autoformat.png 10K

By KennyH - May 1

I have spent quite a bit of time trying to recreate this issue or even find the one example I had for you. I must have dreamed the whole thing! If I see it again, I'll report back.

echo nl2br(htmlencode($record['name'])); should be easy to implement and probably less frustrating because I always forgot to check that box anyway with any new build or schema, and had to go back in and do it.

Thanks,

Kenny H

By 4cdg - May 5

just unzipped this beta and noticed uploads dir is outside cmsb dir... is that correct going forward?

By Dave - May 5

Hi KennyH, 

Thanks for double-checking!  That happens to me all the time.

Dave Edis - Senior Developer
interactivetools.com

By Dave - May 5

Hi 4cdg, 

It's the new "default," but you store your uploads wherever you want, and you don't need to change it for existing sites.

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.

Dave Edis - Senior Developer
interactivetools.com

By Dave - May 5

Hi everyone,

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.

Here's what's new:

MCP Server

  • New auto-disable timer -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.
  • Execute Access - This allows AI to read the server filesystem, run shell commands, and execute PHP.  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.

Show/Hide Fields Polish

  • Custom Expressions: 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)

Plus lots of bug fixes and minor improvements.

You can download the latest beta here:https://www.interactivetools.com/download/

Send over any other issues you find. We're aiming to release this in the next few days if no further issues are reported.

Thanks!

Dave Edis - Senior Developer
interactivetools.com