All Versions
12
Latest Version
Avg Release Cycle
101 days
Latest Release
420 days ago

Changelog History
Page 2

  • v3.2.0-RC1 Changes

    December 16, 2017

    The Lift Committers are pleased to announce the release of Lift 3.2.0-RC1 on December 16th, 2017. This release is the first (and hopefully last) release candidate for Lift 3.2.0. We encourage all Lift Framework users to bump their applications to this version as quickly as possible, and to give us feedback on how it works for you.

    Please read below for the changes in this milestone.

    ๐Ÿ”„ Changes

    ๐Ÿ†• New Features

    (#1770) Comet Rehydration

    0๏ธโƒฃ Since Comets were first introduced in Lift, it's been the case that if the Lift app server got restarted in the middle of a user's session and comets were involved then the user would need to refresh their entire page to reconnect to the server and have their comets start working again. By default, Lift is kind enough to do this page refresh for the users. However, this is a less than ideal experience for obvious reasons.

    Now, after over a year's worth of work, @joescii has delivered Comet Rehydration to the Lift Framework.

    ๐Ÿš€ Comet Rehydration is an optional feature that, when enabled, allows a user's browser to seamlessly reconnect to the comets on the server without needing to reload the page in many circumstances. In cases where significant changes have been delivered to an application, reloading the entire page may still be desirable. However, when deploying small bug fixes to users Comet Rehydration is a useful tool to do so without interrupting their experience in your application.

    There are a couple of prerequisites to use rehydration effectively. Specifically,

    • โšก๏ธ The CometActors in your application should have a mechanism for reconstructing their intended state from cookies or by invoking methods on the client via paritalUpdate that will cause the client to transmit its current state to a new Comet.
    • ๐Ÿ’ป If there is a significant amount of client-side JavaScript interacting with the comet, it would be advisable to version the RPC calls between the client and server so that the client knows when a full page reload is required. Such versions could be incremented to indicate changes in the protocol between the Comet and the browser or indicate that the browser needs to reload the page to fetch new JavaScript that the comet depends on (for example, a new version of jQuery).

    We encourage all Lift developers to take a closer look at Comet Rehydration. We believe it will significantly improve the user experience for end-users of Lift applications when implemented with the prerequisites described above.

    To start using rehydration, add the following to your Boot.boot implementation:

    LiftRules.enableCometRehydration()
    

    ๐Ÿ› Bug Fixes

    • ๐Ÿ“œ (#1924) Correctly override list item markup in lift-markdown. This resolves an issue (#1810) where InlineParser would ignore custom decorators for list items. Thanks @ricsirigu for the fix!
    • โœ… (#1930) Added a null guard to address tests that touch stateful features. Resoles an issue (#1929) where an alarming, but harmless NullPointerException would occur in tests that destroy a LiftSession. Hat tip to @joescii for spotting it and delivering the fix.
    • ๐Ÿ”ง (#1928) Add a configurable maxIdLength to mongo-record's string primary keys. Previously this was hard-coded to 12.

    ๐Ÿ‘Œ Improvements

    N/A

    About Lift

    0๏ธโƒฃ The Lift Framework is a mature, advanced framework for the modern software engineer. There are Seven Things that set Lift apart from the other frameworks out there today: it's secure-by-default, developer-centric, scalable, capable of rich interactive behavior, modular, and designer-friendly. If you're new to Lift or interested in checking out what these things mean, we recommend checking out Simply Lift and The Lift Cookbook.

    The Lift Mailing List is also a good resource for anyone to ask questions or just meet other Lift users. The Lift README is a good resource for figuring out how to use Lift in your project.

  • v3.2.0-M3 Changes

    November 18, 2017

    The Lift Committers are pleased to announce the release of Lift 3.2.0-M3 on November 16th, 2017. This release is the third of three milestone releases for Lift 3.2.0. The first release candidate is tentatively scheduled for December 15th, 2017 with plans to finalize Lift 3.2 around the end of the year. As always, you can follow along with our progress in the GitHub Milestone View.

    Please read below for the changes in this milestone.

    ๐Ÿ”„ Changes

    ๐Ÿ†• New Features

    (#1864) Add transform and flip methods to Box

    Our Box data type has learned a few new tricks.

    The new transform method allows callers to take a Box and, via PartialFunction, turn it into any other Box. If the PartialFunction fails, the original Box is returned.

    Some examples:

    // Returns Full("alternative") because the partial function covers the case.Full("error") transform { case Full("error") =\> Full("alternative") }// Returns Full(1), this Full box unchanged, because the partial function doesn't cover the case.Full(1) transform { case Full(2) =\> Failure("error") }// Returns this Failure("another-error") unchanged because the partial function doesn't cover the case.Failure("another-error") transform { case Failure("error", Empty, Empty) =\> Full("alternative") }// Returns Full("alternative") for an Empty box since `partialFn` is defined for EmptyEmpty transform { case Empty =\> Full("alternative") }// Returns Empty because the partial function is not defined for EmptyEmpty transform { case Failure("error", Empty, Empty) =\> Full("alternative") }
    

    The new flip method allows callers to take a Box and, if it is an EmptyBox (which is an Empty or any sort of Failure), flip it into a Full with a specific type. If it is a Full, an Empty is returned.

    Many thanks to @Bhashit for this contribution!

    ๐Ÿ› Bug Fixes

    • (#1923) Validate that no-arg comet constructor doesn't exist before attempting backup constructor. This fixes a long-standing bug in Lift regarding Comet instantiation. Previously, if you had a comet that threw an exception in it's no-argument constructor we would unintentionally swallow that exception and attempt the backup, comet info constructor. Then we'd complain to the developer that the comet info constructor didn't exist. We're now a bit smarter about how we handle those errors, and check the Exception that the no-arg instantiation returns. If it's anything other than a "no such method" Exception, we'll re-throw immediately instead of trying the comet info constructor.

    ๐Ÿ‘Œ Improvements

    • ๐Ÿ‘ (#1921) @joescii shipped some minor tweaks to support session serialization with lift-cluster.
    • (#1908) MetaProtoExtendedSession cookies can now be restricted to the context path of your application. Or, really, any path you want - though we're skeptical restricting your cookies to /bananas if your application isn't hosted at /bananas would really be that useful.

    About Lift

    0๏ธโƒฃ The Lift Framework is a mature, advanced framework for the modern software engineer. There are Seven Things that set Lift apart from the other frameworks out there today: it's secure-by-default, developer-centric, scalable, capable of rich interactive behavior, modular, and designer-friendly. If you're new to Lift or interested in checking out what these things mean, we recommend checking out Simply Lift and The Lift Cookbook.

    The Lift Mailing List is also a good resource for anyone to ask questions or just meet other Lift users. The Lift README is a good resource for figuring out how to use Lift in your project.