CMSB v3.82 Beta (Improved UI, Menu Count Badges, & .env support)

7 posts by 3 authors in: Forums > CMS Builder
Last Post: 2 hours ago   (RSS)

By Dave - Yesterday at 2:11pm - edited: Yesterday at 2:12pm

Hi everyone,

We've just released v3.82 beta, and we're already running it on our site.  

Here are some highlights from this release: 

  • Database Editor
    • We've reorganized the Database Editor tabs to make it easier to find what you're looking for.
  • Menu Record Counts
    • You can now show record counts on any menu with: Database Editor > Menu Link (tab) > Show Record Count
    • And record counts for all menus now load via Ajax for faster initial page load time
  • .env.php Support
    • You can now store sensitive credentials outside of your web root with .env.php files.  See the included .env.example.php file to instructions
    • This is mainly useful when you want to keep your passwords out of git or backup files.
  • We've also made many minor UI improvements throughout the interface
  • 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:

*** December 29, 2025 - Version 3.82 (Improved UI, Menu Count Badges, & .env support)

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

NEW FEATURES
- Database Editor: Added "Show record count in menu" option to display record count badge next to menu items
- .env.php Support: Optionally store sensitive credentials in a separate file outside your web root.
- Safely commit settings files to git without exposing secrets
- Back up your data folder without including credentials
- Uses .php extension so credentials can't be viewed via direct URL access
- See .env.example.php for details and instructions

MINOR CHANGES
- Database Editor: Reorganized Section Editor tabs and fields with improved layout
- Editor UI: Create button now supports middle-click to open in a new tab
- Editor UI: Editor instructions now display in a dashed border box for better visibility

FOR PROGRAMMERS
- SmartArray: Major refactor with ~50% better performance (removed ArrayObject dependency)
- New sprintf() method - applies formatting to each element with auto HTML-encoding
- Supports {value} and {key} as readable aliases for sprintf formats
- Example (table cells): <tr><?= $row->sprintf("<td>{value}</td>")->implode() ?></tr>
- Example (headers): <tr><?= $row->keys()->sprintf("<th>{value}</th>")->implode() ?></tr>
- Array access deprecated: $array['key'] → use $array->key or $array->get('key')

FOR PROGRAMMERS (BREAKING CHANGES)
- Note: These changes only impact developers who have written custom PHP code using the following features
- .env.php: Code using $_ENV['key'] must be updated to \CMS::env('key')
- SmartArray: Class hierarchy changed (only affects custom function type hints)
- Example: function yourCustomFunction(SmartArray $input): SmartArray
- Replace SmartArray with:
- SmartArrayBase - any SmartArray type (safe default)
- SmartArrayHtml - HTML-encoded data (from ZenDB)
- SmartArray - raw/unencoded data

BUG FIXES
- CMS Link Menus: Fixed error when Authors clicked link menus ("This section isn't configured to allow 'Author' user access")
- CMS Record Lists: Viewers can now see menus and lists even when View isn't enabled (only hides the view link)
- Misc code and other minor improvements

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

Update: Just released Beta 2 with fixes for some PHP warnings we discovered.  It's available for download here:

https://www.interactivetools.com/download/

Dave Edis - Senior Developer
interactivetools.com

By KennyH - Yesterday at 3:44pm - edited: 8 hours ago

First off, there are some really nice improvements to the UI/UX - really enjoying these changes especially!

I did run into a couple of issues. I took screenshots to help illustrate.

  1. When I go to CMS Setup >Database> *Database Table* the last two tabs (Advanced and MySQL Source) are aligned to the right and separated from the first three tabs. Is this intentional?

  2. When I go to a single-record table > Enabled Actions > Preview (is the only option available). If I click save and try to visit that item, I get "Modifying records has been disabled for this section!" 
    I can manually change it back in the schema, but if I save it through the interface, it reverts back to '_disableModify' => 1,

Still looking at other stuff, but this is pretty cool so far!

Thanks,

Kenny H

Hi Kenny, 

Great, glad to hear you're liking the UI/UX changes!  We're always trying to streamline our own process and looking for those micro-optimizations that will save us cumulative time day after day.

1. When I go to CMS Setup >Database> *Database Table* the last two tabs (Advanced and MySQL Source) are aligned to the right and separated from the first three tabs. Is this intentional?

Yes, this is intentional, although I know split tabs are a less common pattern. The thought is to visually separate the everyday settings from more technical options that most users can safely ignore. The primary tabs (Overview, Menu Link, List Page, Viewers) are grouped on the left, where users naturally start, while Advanced and MySQL Source are available but visually de-emphasized on the right. This helps reduce cognitive load for typical users while keeping power-user features accessible when needed. The "Advanced" tab label already signals the nature of those tabs, but we're always open to feedback - if the separation feels confusing or causes friction in practice, let us know and we can revisit it in a future update.

It took a little bit to get used to, but I've been using it for a while and find it simpler and faster. Those menus may continue to evolve as we add new features that need configuration options.

2. When I go to a single-record table > Enabled Actions > Preview (is the only option available). If I click save and try to visit that item, I get "Modifying records has been disabled for this section!" 
I can manually change it back in the schema, but if I save it through the interface, it reverts back to '_disableModify' => 1,

Good catch, I've just released beta 3 with that issue fixed, along with everything else reported to date.

Thanks for the feedback!

Dave Edis - Senior Developer
interactivetools.com

Hi Jeff, 

Can you confirm if /data/_error_log.schema.php was updated and if it contains a field schema for debug_data?

If it's there but it didn't get created clicking on "Database Editor" on the menu automatically checks for and recreates missing fields.  But let me know because it should be created automatically.

Dave Edis - Senior Developer
interactivetools.com

no it did not get created automatically 

Also now getting this error when I try to upload an image.

Upload Details
Error: NoDecodeDelegateForThisImageFormat `/Volumes/J/@projects/cmsb-beta/html/www/cmsb/data/temp/upload_lLjju9' @ error/constitute.c/ReadImage/752 in /Volumes/J/@projects/cmsb-beta/html/www/cmsb/lib/image_functions.php:194 [Admin View]

Backtrace:
#0 Script started at /Volumes/J/@projects/cmsb-beta/html/www/cmsb/admin.php:0
#1 require() at /Volumes/J/@projects/cmsb-beta/html/www/cmsb/admin.php:81
#2 require() at /Volumes/J/@projects/cmsb-beta/html/www/cmsb/lib/menus/default/actionHandler.php:103
#3 require() at /Volumes/J/@projects/cmsb-beta/html/www/cmsb/lib/menus/default/uploadForm.php:4
#4 submitUploadForm() at /Volumes/J/@projects/cmsb-beta/html/www/cmsb/lib/menus/default/uploadForm_functions.php:21
#5 saveUpload() at /Volumes/J/@projects/cmsb-beta/html/www/cmsb/lib/menus/default/uploadForm_functions.php:41
#6 _image_fixJpegExifOrientation() at /Volumes/J/@projects/cmsb-beta/html/www/cmsb/lib/upload_functions.php:265
#7 Imagick->__construct() at /Volumes/J/@projects/cmsb-beta/html/www/cmsb/lib/image_functions.php:194
#8 ImagickException(420) thrown at /Volumes/J/@projects/cmsb-beta/html/www/cmsb/lib/image_functions.php:194
PHP v8.3.28 (phpinfo) - View Errors and Warnings (4) >>

    Running as jeffshields under Apache 2.0 Handler and using config files:
        /opt/homebrew/etc/php/8.3/php.ini
        /Volumes/J/@projects/cmsb-beta/html/www/cmsb/.htaccess
        /opt/homebrew/etc/php/8.3/conf.d/20-imagick.ini
        /opt/homebrew/etc/php/8.3/conf.d/20-xdebug.ini
        /opt/homebrew/etc/php/8.3/conf.d/20-yaml.ini
        /opt/homebrew/etc/php/8.3/conf.d/ext-apcu.ini
        /opt/homebrew/etc/php/8.3/conf.d/ext-opcache.ini
    Caching Modules: Zend OPCache (PHP files cached - 2s update delay) reset cache
    Image Modules: gd, imagick 
Jeff Shields
yaadev.com