Volt v0.9.5 Release Notes

  • ๐Ÿ’ฅ Breaking Changes

    • ๐Ÿฑ previously, we mounted the asset folders in components at /assets, and we also mounted the /app folder (and any gem's app folders') at /assets. This allowed you to usually access what you wanted at /assets, but resulted in conflicts. To ensure better component isolation, we now only mount the app folders. To make things clear, instead of sprockets being mounted at /assets, it is now mounted at /app. So the url for something in /app/main/assets/css/something.css can be accessed at (you guessed it) /app/main/assets/css/something.css

    โž• Added

    • You can now disable auto-import of JS/CSS with disable_auto_import in a dependencies.rb file
    • โฌ†๏ธ Opal was upgraded to 0.8, which brings sourcemaps back (yah!)
    • ๐ŸŽ Page load performance was improved, and more of sprockets was used for component loading.
    • You can now return promises in permissions blocks. Also, can_read?, can_create?, and .can_delete? now return promises.
    • 0๏ธโƒฃ Anything in /public is now served via Rack::Static in the default middleware stack. (So you can put user uploaded images in there)
    • You can now use _ or - in volt tag names and attributes. (We're moving to using dash ( - ) as the standard in html)
    • ๐Ÿ‘€ You can now trigger events on controllers rendered as tags. The events will bubble up through the DOM and can be caught by any e- bindings. See the docs for more information.
    • Rewrote the precompile pipeline.
      • Added image compression by default. (using image_optim)
    • All volt CLI tasks now can run from inside of any directory in the volt app (or the root)
    • Asset precompilation has been reworked to use Sprockets::Manifest. The results are written to /public, and an index.html file is created. The entire app loading up until the websocket connect can be served statically (via nginx for example) All js and css is written to a single file.
    • The generate gem generator has been improved to setup a dummy app and integration specs out of the box.
    • Tasks can now set (only set, not read) cookies on the client using the cookies collection.
    • โž• Added login_as(user) method to Tasks and HttpController's.
    • ๐Ÿš€ asset_url helper in css/sass and html files
    • ๐ŸŽ Sourcemaps are enabled by default, you can disable them with MAPS=false env. By default Volt and Opal code is not sourcemapped. To enable sourcemaps for everything run with: MAPS=all (note this has a slight performance hit) Read the docs for more.

    ๐Ÿ”„ Changed

    • ๐Ÿ›  fix issue with raw and promises (#275)
    • ๐Ÿ›  fix issue with .length on store (#269)
    • The {root}/config/initializers directory is now only for server side code.
    • Redid the initializer load order so all initializers run before any controllers/models/views are loaded.
    • โž• Added error message for when an unserializable object is returned from a Task
    • ๐Ÿ›  Fixed issue with disable_encryption option
    • ๐Ÿ›  Fixed issue with select's not selecting options when options are dynamically loaded