PyroCMS 3.4-beta1

Ryan Thompson Releases

We have finished Pyro v3.4 which is primed and ready for the Laravel 5.5 release.

Looking at some of the features and updates it's important to note that because we use a semantic and agile versioning approach some of these features may already be very familiar to you.

When we bump minor versions like this it is our only chance to introduce database migrations for new core features as well as new and planned features for addons even if the features have yet to be released.

Try it out!

composer create-project pyrocms/pyrocms:3.4.x-dev

There have been loads of new little features and bug fixes to the system as a whole but here are a few favorites from the Streams Platform which has bumped versions recently:

Image Service

  • Added a copy method that copies the file to public verbatim. Nice for animated gifs!
  • Added automatic image versioning to help alleviate common issues when using aggressive caching strategies.
  • Added automatic alt tags that humanize the file name by default if no alt is provided.
  • Removed aggressive auto-optimization for mobiles and tables and created an opt-in/customizable pathway for using the feature.

Asset Service

  • Added automatic asset versioning to help alleviate common issues when using aggressive caching strategies.
  • Fixed issue where minifying would fail when also parsing assets.
  • All assets are now parsed unless using the noparse flag.
  • Improved cache busting for included / nested assets that are inherited by the file included in the collection.
  • Added a resources path hint for /resources/{app}/*
  • Updated theme stub to demonstrate dumping inline styles in the head for better PageSpeed scores.
  • Added pathway to add your own custom filters and filter flags to the Asset pipeline using the AssetFilters class.



  • Improved autoloader performance by merging composer.json files instead of loading on the fly.
  • Created a Satis repository for effortless PRO addon support:
  • Updated Laravel to 5.5
  • Updated Twig to 2.0


  • Improved support for nested control panel sections.
  • Added Select2 "search" modes to applicable field types.
  • Improved usability for tables and forms with affixed headers and controls.
  • Added form tabs, sections, and action buttons in the forms for most all first-party addons.
  • Streams are now sortable.
  • Added RTL support to control panel with the help of
  • Added date/time picker UI back to datetime FT with native JS plugin.
  • Added control panel global search with integration API on the way.
  • Staged database requirements for upcoming revisionable core features.


Upgrading is a similar process as other releases.

First update your composer.json file. Copy the composer requirements from the 3.4 composer.json to your own and run a composer update to make sure you have the same dependencies as the 3.4 branch:

While we are in our composer.json file be sure bring these lines over as well:

Next migrate the streams platform by running the following command: php artisan migrate --path=vendor/anomaly/streams-platform/migrations/application

Then migrate all the addons: php artisan migrate --all-addons

That's it!

Backwards Compatibility

Before upgrading you may want to consider the following BC notes and probability of their addressing your typical project:

Very Rare: Any use of TwigBridge/Bridge should be replaced with Anomaly\Streams\Platform\View\Twig\Bridge. The API is the same however we absorbed that dependency in order to optimize view overrides and control some other factors of that functionality.

Rare: $route->getParameter($key) in Laravel has been renamed $route->parameter($key). While I did personally have some examples of this it is unlikely due to common practice for Laravel devs to simple use method injected route parameters.

Rare: While most developers will use the env for configuring compilers to use PHP or Ruby it may be possible that some have published the streams platform configuration and overridden it there. In that case make sure that the streams::assets.filters configuration key values in your published config align with those found in the streams platform:

Please keep us posted on issues here:

- Ryan