Changes in Lift Web Framework

Release History

VersionDateDescription
2.0-M12010-01-14Lift 2.0 Milestone 1
1.1-M82009-12-10Lift 1.1 Milestone 8
1.1-M72009-11-07Lift 1.1 Milestone 7
1.1-M62009-10-09Lift 1.1 Milestone 6
1.1-M52009-09-08Lift 1.1 Milestone 5
1.1-M42009-08-04Lift 1.1 Milestone 4
1.1-M32009-07-02Lift 1.1 Milestone 3
1.1-M12009-05-01Lift 1.1 Milestone 1
1.02009-02-26First Major
0.102009-01-14api refactor
0.92008-06-15
0.82008-05-09
0.72008-04-03
0.62008-03-10
0.52008-02-05
0.42008-01-07
0.3.02007-12-07champagne
0.2.02007-06-06
0.1.02007-02-26first public release

Release 2.0-M1 - 2010-01-14

TypeChangesBy
fixChanged LiftRules.getResourceAsStream() to doWithResource() to ensure InputStream is always closed Removed duplicate LiftRules.finder() Fixes 273.boisvert
fixAdded logging of bad prepared statements to help diagnose things. Fixes 232.dchenbecker
fixFixed Mapper to properly deal with generated values Fixes 231.dchenbecker
updateMisc sitemap enhancements Fixes 268.dpp
fixLift explicitly closed streams rather than waiting for garbage collection Fixes 267.dpp
fixJetty restarts do not cause exceptions to be thrown Fixes 266.dpp
updatelift-json's Jsvalue may be used with JsonResponse Fixes 262.dpp
fixFixed NPE problems in Mapper to Json Fixes 248.dpp
updateBetter handling of flot widget in Comet Fixes 247.dpp
fixFixed misc Textile bugs Fixes 244.dpp
updateEnhanced stateful rewrite Fixes 243.dpp
updateAdded post-commit hook to DB Fixes 242.dpp
updateWizard supports file upload forms Fixes 241.dpp
updateEnhanced TestCond widget Fixes 240.dpp
fix304 responses no longer contain content type Fixes 239.dpp
updateEnhanced connection pool logic Fixes 236.dpp
fixFixed some null exceptions with DB queries Fixes 234.dpp
fixFixed problems with the JNDI context Fixes 223.dpp
fixFixed synchronization issues with Vars Fixes 222.dpp
updateOAuth support (thanks to the FourSquare guys) Fixes 276.dpp
fixFile handles released correctly in Jetty Fixes 275.dpp
updateExtracted "Screen" code from Wizard for stand-alone declarative input screens Fixes 250.dpp
updateRestructure project (segregated into three logical projects: framework, archetypes, examples)indrajitr

Release 1.1-M8 - 2009-12-10

TypeChangesBy
addAdded new built-in <lift:html5> snippet that sets HTML5 DOCTYPE on the XHTML responseboisvert
fixJqJsCmds.ModalDialog now takes JsObj argument to work with BlockUI v2.x Fixes 218.boisvert
fixFixed typo in DerbyDriver.integerIndexColumnType: IDENITY -> IDENTITYboisvert
fixFixed Mapper to use DriverType.columnTypeMap everywhere Fixes 211.dchenbecker
fixFixed Mapper logging to properly log inserts, updates and deletes Fixes 210.dchenbecker
fixBreaking Changes: 1) LocParam LocParam has been made a sealed trait to facilitate pattern matching within the Lift codebase and has had a contravariant type parameter added to its type to facilitate typesafe interactions with Loc[T]. The new trait is hence LocParam[-T]. As LocParam is now a sealed trait, I have added an extension point for user-specified LocParam subtypes as UserLocParam[-T] extends LocParam[T]. Since the new type parameter is contravariant, LocParam subclasses that are applicable for any Loc[T] have the type LocParam[Any], and a type alias AnyLocParam has been added for this type. The Loc.checkProtected method now enforces type consistency between the evaluated Link[T] and the list of LocParam[T] which are used to evaluate whether the link is accessible given the specified parameters. 2) Renames Previously, the "Param" suffix was used for two unrelated purposes within Loc: first, to refer to the type parameter of the Loc, and secondly for the LocParam configuration. This overloading made the code and the API somewhat difficult to read, so the first usage has been removed resulting in the following renames: ParamType => T NullLocParams => //removed, Unit is sufficient! Loc.defaultParams => Loc.defaultValue Loc.forceParam => Loc.overrideValue Loc.foundParam => Loc.requestValue Loc.additionalKidParams => Loc.childValues After this change, all instances of the "param" name within Loc should refer to something having to do with LocParam instances. Non-Breaking Additions: case class IfValue[T](test: Box[T] => Boolean, failMsg: FailMsg) extends LocParam[T] case class UnlessValue[T](test: Box[T] => Boolean, failMsg: FailMsg) extends LocParam[T] case class TestValueAccess[T](func: Box[T] => Box[LiftResponse]) extends LocParam[T] If you are using a non-Unit typed Loc, you can use these LocParam instances to enforce access rules at the value level. case class ValueTemplate[T](template: Box[T] => NodeSeq) extends LocParam[T] //per-value template selection DataLoc[T] subclass of Loc was added to facilitate the use of the new more typeful LocParam subtypes. A few changes to Link: Since Link.createLink creates a Box[Text] (and not a clickable link) a couple of methods were added to create the intermediate, unboxed values in order that subclasses can more easily manipulate the resulting path: Link.pathList(value: T): List[String] // added to facilitate creation of value-aware paths by subclasses. Link.createPath(value: T): String //creates the String representation of the path that is subsequently turned into XML and boxed by Link.createLink Fixes 139.Kris Nuttycombe
fixAllowing page fragments wrapped by <lift:lazy-load> node to be processed and loaded asynchronously. Fixes 56.marius.danciu
fixUpdated documentation for Msgs Fixes 153.boisvert
fixXmlResponse(...) now accepts optional HTTP status code, mime type and cookies. Fixes 177.boisvert
fixSQL Server Alter Table Fails Fixes 14.boisvert
fixTypo in Req.scala Fixes 170.boisvert
fixSnapshot jars contains several Box.class files Fixes 166.hseeberger
updateUpdate hibernate-entitymanager to 3.4.0.GA. Fixes 156. Thanks to econoplas.indrajitr
updateAdjust javax.mail version range to avoid issues when Sun's repo is used and honor javax.activation being transitively pulled up my javax.mail. Fixes 168. Thanks to awhitford.indrajitr
fixFix scala:doc and vscaladoc configuration along with provision for module specific configuration for packageLinkDefs. Fixes 180.indrajitr
updateEnforce Maven version 2.1.0 or higher, but lower than 3.0. Fixes 203.indrajitr
fixUpgrade Lift archetypes to use the new archetype metadata format. Enhance/fix archetype integration tests during build. Fixes 161.indrajitr
fixEnhance archetype metadata not to depend on ext.vm and allow one to set Lift version (-DliftVersion) or Scala version (-DscalaVersion) during archetype:generate. Fixes 227.indrajitr
addAdd ability to call JS code after AJAX form submit Fixes 148.dchenbecker
addAdd AJAX editable field generator to SHtml, add AjaxEditableField to Mapper. Fixes 181.dchenbecker
fixFixed SQL Server drivers to use version-appropriate unicode columns for text. Fixes 16.dchenbecker

Release 1.1-M7 - 2009-11-07

TypeChangesBy
updateImprove error message if database is not supported Fixes 57.alex.boisvert
updateChange net.liftweb.mapper.ByList to take a Seq[T] instead of a List[T] Fixes 77.alex.boisvert
updateBoxed payment status so that IPN cancelations appear as Empty. Breaking API change for implementors. Fixes 88.timperrett
fixTextile parser outputs non-valid output. Changed some null to Null. Fixes 94. Thanks to vdichev.dpp
addEnhanced the documentation for an type signatures for Actorsdpp
addRevised Lift to use LiftActors and be compatible with Akka Actorsdpp
fixS.deleteCookie broken in M6 Fixes 126.dpp
addDB.runQuery isn't ConnectionIdentifier-aware Fixes 125.dpp
fixMisspelling in field name in ProtoExtendedSession Fixes 119.dpp
fixnet.liftweb.widgets.autocomplete in version 1.1-M6 changed return type from NodeSeq to Elem Fixes 120.dpp
fixStatefulSnippets generate invalid markup Fixes 122.dpp
updateUpdated Lift to use Scala 2.7.7 Fixes 142.dpp
fixStacked URL Rewriting correctly deals with params Fixes 143.dpp
fixSimplified Factory signatures in LiftRules Fixes 141.dpp
updateRestructured Lift codebase (now categorized into lift-base, lift-persistence, lift-modules, lift-archetypes and lift-examples). Fixes 127.indrajitr

Release 1.1-M6 - 2009-10-09

TypeChangesBy
updateProject build models are more enriched and streamlined. Fixes 128.indrajitr
addJSON diff and mergejoni
updateGeneralized JSON serializationjoni
fixUse paranamer to find out case class constructor argument namesjoni
fixEnhance CRUDify i18n Fixes 84.heiko.seeberger
addAdd parameterized ?? to S Fixes 82.heiko.seeberger
fixInaccurate ranges for previous and next (page) in CRUDify Fixes 87.heiko.seeberger
fixNo i18n for "Sign Up" in MetaMegaProtoUser.signupXhtm Fixes 81.heiko.seeberger
fixLost password submit button is not rendered correctly Fixes 111.heiko.seeberger
fixSignup mail body not i18ned Fixes 113.heiko.seeberger
fixMisspelled Key "pasword.changed" in ProtoUser.scala Fixes 114.heiko.seeberger
fixEnhance Msgs snippet to optionally show all messages Fixes 123.heiko.seeberger
fixMappedPassword contains misspelled key for unset password Fixes 157.heiko.seeberger

Release 1.1-M5 - 2009-09-08

No changes in this release.

Release 1.1-M4 - 2009-08-04

TypeChangesBy
addAdded HTTP abstraction for making Lift container agnostic.Marius Danciu

Release 1.1-M3 - 2009-07-02

TypeChangesBy
addAdded <lift:tail> builtin snippet for merging content at the end of body tagMarius Danciu

Release 1.1-M1 - 2009-05-01

TypeChangesBy
addFixed Bug #34 - lift processing directives should be implemented as snippetsMarius Danciu
addAdded support for templates cachingMarius Danciu

Release 1.0 - 2009-02-26

TypeChangesBy
addAdded support for multiple resource bundlesMarius Danciu

Release 0.10 - 2009-01-14

TypeChangesBy
updateConsolidate LiftRulesMarius Danciu
updateAdded HTTP authentication supportMarius Danciu
updateUpgrade to Scala 2.7.3Jorge Ortiz
updateUpgrade to Scalacheck 1.5Jorge Ortiz
updateUpgrade to Specs 1.4.0Jorge Ortiz
updateAdded Record/Field generic supportMarius Danciu
updateChanged Can to BoxDavid Pollak
updateChanged RequestState to ReqDavid Pollak
updateUpdated LiftView to be more syntactically pleasingDavid Pollak
updateFixed a bug with how RequestVars and traits workDavid Pollak
updateEnhanced the DateTime inputsDavid Pollak
updateFirst pass at complete PayPal ITN and PDT stuffDavid Pollak
updateRefactoring of the PayPal stuffDavid Pollak
addA Currency classDavid Pollak
addAdded a nifty mechanism for stateful form management (Hoot)David Pollak
addAdded fix CSS supportMarius Danciu
addAdded support for other JS librariesMarius Danciu
addAdded JSON forms supportMarius Danciu
updateUpdated to jQuery 1.2.6Jorge Ortiz
addAdded PayPal Integration moduletimperrett
updateRedesigned Gavatar widgettimperrett

Release 0.9 - 2008-06-15

TypeChangesBy
addAdded URL rewriting supportMarius Danciu
addAdded CalendarDayView widgetMarius Danciu
addAdded CalendarWeekView widgetMarius Danciu
updateSwitch from svn (code.google.com) to git (github) has scm to manage sourceDavid Pollak

Release 0.8 - 2008-05-09

TypeChangesBy
updateUse vscaladoc to generate APIDavid Bernard
updateCompiled the project with Scala-2.7.1Jorge Ortiz
addStart the lift-openid moduleDavid Pollak
addStart the lift-oauth moduleDavid Pollak
addAdded CalendarMonthView widgetMarius Danciu
addStart the lift-widgets moduleMarius Danciu
addAdded ActorPing#scheduleAtFixedRateMarius Danciu
addAdded notices support for Comet actorsMarius Danciu
addAdded JavaScript statements as JsCmdMarius Danciu

Release 0.7 - 2008-04-03

TypeChangesBy
addGave AMQPDispatcher users the ability to auto-reconnect to the amqp server if it restarts.Steve Jenson
update- Separating html functions from S object to SHtml object - Putting LiftRules in its own file - Adding support for associating messages with ID's to allow form fields validation messages. - ValidationIssue renamed into FieldError and lives in http package - ErrorReport built in snippet was renamed to Msgs - Added Msg built in snippet used for form field messages (Renders only messages associated with this tag id)Marius Danciu
addExtracted from the Helpers class, documented and tested ClassHelpers, ControlHelpers and TimeHelpers TraitsEric Torreborre
addAdding unload hooks so a user's lift app can make sure that certain methods are called when the war is unloaded by the servlet container.Steve Jenson
addAdding a bunch of Responses to help make building RESTful Web Services easier in lift.Steve Jenson
addAdded extensible support for specifying the behavior for invalid URI's (with or without site map)Marius Danciu
updateChanges LiftServlet object name to LiftRulesMarius Danciu
updateChanged Loc behavior to use ResponseItMarius Danciu
addAdded RedirectWithStateMarius Danciu
addAdded a KeyedCache for model objects built on top of the LRU class.Steve Jenson
Split lift-core into several modules : lift-webkit, lift-amqp, lift-facebook, lift-testkit, lift-textile, lift-xmppDavid Bernard

Release 0.6 - 2008-03-10

TypeChangesBy
updateCompiled the project with Scala-2.7.0Eric Torreborre
addAdded RedirectResponse classMarius Danciu
addAdded lift core localization support.Marius Danciu
addAdded Cookie support.Steve Jenson
updateUpdating our version of jQuery to 1.2.3.Steve Jenson
addAdded a new method to MetaMapper that lets you find models by PreparedStatement. findByPreparedStatementSteve Jenson

Release 0.5 - 2008-02-05

TypeChangesBy
addAdded a new QueryParam, ByList which lets you query on Model objects with a List[T].Steve Jenson
updateRevised the example site to use Blueprint CSS for styleDavid Pollak
addjlift JavaScript utilities and associated binder helpers.David Pollak
addBlueprint CSS built in (version 0.6) so it can be served via /classpathDavid Pollak
addXML -> JavaScript bindings so that JSON -> XHTML rendering can be defined using Scala XML literals, but the resulting JavaScript code can be sent to the browser to do mass rendering of JSON objects.David Pollak
addAdded JSON support including: - S.buildJSONFunc - JSONHandler class - Lots of fancy JavaScript expression buildingDavid Pollak
updateWhen lift is running in test mode, the default form generators will insert lift:field_name attribute into the form fields to aid in testingDavid Pollak
updateAdded json2.js (and minified version) Enhanced the resource serving stuff so that: - The path is defined in LiftServlet and changable (defaults to "classpath") - Moved the resource location from the root to "toserve" (can be changed) to avoid any possible way of serving up classes - The white list is a Partial Function for more flexibility - The white list by default contains jquery.js and json.js - There's a re-writer to re-write the request into an actual file (so jquery.js gets re-written to jquery-1.2.2-min.js)David Pollak
addParser Combinator Helper routinesDavid Pollak
updateMappedField.toForm now returns a Can[NodeSeq] so a field can be omitted from a formDavid Pollak
addAdded the "record" and "record_mgt" packages with half-baked record and field stuff in themDavid Pollak
updateAdded LocInfo and LocInfoVal to SiteMap for storing CSS and other tidbits about each menu itemDavid Pollak
updateFixed the 'Welcome to the your project' type-oDavid Pollak
updateFurther abstracted the whole logging thing. There's a default log4j setup that can be overriden. The LiftLogger trait is made concrete in Log4JLogger, but the generic LiftLogger creation is done by function that can be modified in LogBoot: var loggerByName: String => LiftLogger = _logger; var loggerByClass: Class => LiftLogger = _loggerCls; One can insert a new logging system into lift by replacing the loggerByName and loggerByClass functions with appropriate functions that return a LiftLogger.David Pollak
addMappedText and MapperFakeClob classesDavid Pollak
updateExtensive updates to the <lift:xxx /> tag mechanism that uses tag labels as snippets and support for adding arbitrary tag handling to lift.David Pollak

Release 0.4 - 2008-01-07

TypeChangesBy
addAdded XMPP support for lift applications. see the package net.liftweb.xmppSteve Jenson
addAdded support for switching XHTML MIME type serving off. See LiftServet.useXhtmlMimeTypeSteve Jenson
updateUpgrade to scala-2.6.1David Pollak
updateSupport for PosgreSQL 8.1 and some testsDavid Pollak
addAdding support to H2 to lift-ORMMaciek Starzyk
addAdding support to PostgreSQL to lift-ORMMaciek Starzyk
add/html/body//head are merged into /html/head, to allow html fragment inlined into body to contribute to /html/headDavid Bernard
addAdding a new lift archetype, lift-archetype-basic that will generate a lift template with basic database and users functionality.Steve Jenson
addAdding LiftConsole to archetype to play with lift-based application in console modeSteve Jenson
addAdding mock for HTTPRequest and CoSteve Jenson
addAdding first Specs test to test lift-coreDavid Bernard
updateThe look of the maven site generated (for lift itself and for archetypes)David Bernard
removeRemoving deprecated new_proj (replaced by archetypes)David Bernard
removeRemoving lift-archetype-hellolift (replaced by lift-archetype-basic (and the sample application hellolift))David Bernard

Release 0.3.0 - 2007-12-07

TypeChangesBy
addSupport for Ajax including integration of jQueryDavid Pollak
addRadically improved Comet supportDavid Pollak
addFacebook API supportJorge Eugenio Ortiz Hinojosa
addAMQP (RabbitMQ) supportSteve Jenson
addRadically improved Comet supportDavid Pollak
addBuilt in Traits for Users (including user management) and TagsDavid Pollak
addSupport for a variety of new Mapped types (Country, Locale, Postal Code, etc.)David Pollak
addNew examples including a real-time blogDavid Pollak
updateProject builder using Maven and significantly improved Maven supportDavid Bernard
addLocalizationDavid Pollak
addImproved XHTML support including proper headers based on browser typeDavid Pollak
updateImproved documentationTeam
updateRadically improved samples and "getting started" piecesTeam
addsupport for multiple database instancesDavid Pollak
addimproved regex support including some Regex -> object creation support for parsingDavid Pollak
adda new and improved textile parserDavid Pollak

Release 0.2.0 - 2007-06-06

TypeChangesBy
add"new_proj" script to create a new projectDavid Pollak
addHTTP test framework for writing testsDavid Pollak
addSkittr code example -- a Twitter clone in lift and ScalaDavid Pollak
addSiteMap -- define site navigation and access control rules in a Domain Specific LanguageDavid Pollak
addeach model can live in a different database (multi database support)David Pollak
addsupport for Jetty continuations on AJAX calls (automatic, not application code required)David Pollak
updateimprovements to query buildingDavid Pollak
addShared session variable across Snippets and ControllersDavid Pollak
add"recursive snippets" to re-write the pageDavid Pollak
addability to pass attributes to Snippets and ControllersDavid Pollak
addbuilt in support for blowfish encryptionDavid Pollak
addlogging via log4jDavid Pollak
addMappedListEnum to persist List[Enumeration] easilyDavid Pollak
addlots of HTML form elements (select, multiselect, etc.)David Pollak
updateenhanced SQL queriesDavid Pollak
addfilterMap support for queries as the rows come back from the databaseDavid Pollak
addcomparison operators for MappedFieldDavid Pollak
addrun modes (Production, Test, Development, etc.)David Pollak
addproperties that are based on user, machine, and run modeDavid Pollak
addfilters for fields such that input (and comparison and queries) can automatically be made upper case, lower case, trim, etc.David Pollak

Release 0.1.0 - 2007-02-26

No changes in this release.