A new major release of CB Package Builder is here with some huge improvements, optimizations, and features! Check out the details below!
First and foremost the biggest change is files are no longer exclusively parsed from the filesystem. They are now database stored. The advantage of this is exceptional increase in performance as the filesystem no longer needs to be parsed anytime a download is accessed or displayed. Previously this was using a form of caching on the filesystem, but this has all now been moved to the database. This brings us to the new file management page on frontend and backend available to packages that will show all files and versions found for a package. From there you can delete or upload new files as well!
Your files will still exist in the filesystem as they were before, but now during file discovery process they will be stored into the database as well. You can configure how often file discovery should happen on frontend or have it exclusively ran from external build systems. So for example you could run the file discovery in your build pipeline when you release a new version!
This includes a caching function to avoid being ran too often. It will also ignore file discovery on directories that haven't been modified since the last parse to avoid unnecessary parsing. This has been a substantial performance increase over previous implementations!
Since versions are now stored in the database we can more efficiently retrieve them. The result is 2-3x performance increase in all frontend package views as the information needed is already available without ever having to touch the filesystem.
Additionally due to stored versions we can do apply conditioning to them. At the moment this is only available for the CBSubs Package Builder integration. You will now be able to allow retroactive downloading. This means for example if someone's subscription expired on 05-01-2024, but a new release was made 04-06-2024 they will still be able to download it. If however a release as made 05-02-2024 they won't have access to that new release since their subscription expired before it was released.
Additional display options have also been added. You can now control the footer display of every package more specifically. Previously you were only permitted to toggle off a few of these without having to modify template files. You can now toggle all of them off as needed. This also applies to Presets.
Next up is Pages. Packages often need a product page associated with them. This is a huge marketing potential for any of your downloads. Previously this was all managed under the Details tab where things could quickly get a bit hectic due to all the parameters. Those parameters have been moved to Pages. You'll see a new icon and button when managing your packages and presets as shown below.
When editing a packages page you can configure a large amount of custom display features to fill out your product pages however you like.
Some new features being Banner and Background. Banner is shown at the very top of the package allowing you to show a nice large header hero image if you like. Background allows you to place a background behind the title, description, media, and logo of a package to give it a nice stand out look. Both support internal and external URLs in addition to substitutions! Next up is the old Feature Blocks have been given a fresh new look. It's now designed more like a simple block editor for you to add as many feature blocks as you like under your packages.
If you want some great examples of how package and preset pages work take a look at our own site!
https://www.joomlapolis.com/community-builder
https://www.joomlapolis.com/addons/cb-paid-subscriptions
https://www.joomlapolis.com/addons/cb-package-builder
These were all built with CB Package Builder!
We're not done yet though. A new Table template has also been implemented. The table template gives you a nice clean table view of your packages should you prefer it over the card or gird based views.
Beyond that A LOT of internal improvements to the codebase have been made and while you don't see them they're there providing a more secure and fast experience.
For a full list of changes check out our changelog below.
https://forge.joomlapolis.com/projects/cb-cbpackagebuilder/issues?query_id=251