Skip to content
CAI
Software that uses CAICheck a score

lift/framework

35.5

Weak · 27 September 2026

46.8k

lines of production code

Scala

with JavaScript

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is the Lift web framework, a Scala-based toolkit for building dynamic web applications. It provides core utilities for asynchronous programming, data modeling, and content parsing, alongside a web layer that handles HTTP requests, session management, and server-side rendering. The framework supports modern Jakarta EE standards and cross-compilation for Scala 2.13 and Scala 3, while offering testing utilities and localization features for application development.

How it got here

2009 — Lift 2.0 legacy removal and SBT migration

54 changes.

This period involved the comprehensive removal of legacy Lift 2.0 components, including the old actor model, Box API, webkit core, and numerous deprecated widgets and integration modules. The work also included cleaning up obsolete test suites and documentation link definitions, culminating in a migration of the build system from Maven to SBT with updated Scala versions.

2010–2011 — Jakarta EE migration and Scala 3 support

29 changes.

This period focused on modernizing the Lift framework by migrating the servlet API from javax to Jakarta EE and upgrading the build infrastructure to support Scala 3 alongside Scala 2.13. Significant work included restructuring the project modules, adding Java compatibility bridges, and enhancing core utilities such as async futures, logging, and HTML parsing. The effort also expanded test coverage and added localization resources to support the new technical stack.

2012–2026 — Scala 3 migration and Markdown parser

15 changes.

This period focused on expanding the framework's capabilities with new features like a Markdown parser, server-side JavaScript execution, and customizable sitemap rendering. Significant effort was also directed toward modernizing the codebase by adding Scala 2.13 and Scala 3 support for core components like FutureWithSession, accompanied by extensive test coverage to ensure stability across versions.

Features

Added Blueprint CSS framework and Ext Core 3.1 JavaScript library to static resources

The \web/webkit/src/main/resources/toserve\ directory now includes the Blueprint CSS framework (providing grid, form, and IE-specific styles) and the Ext Core 3.1 JavaScript library (providing DOM manipulation, event handling, and animation utilities). These additions make the libraries available for serving to clients, supporting frontend styling and scripting capabilities without external dependencies.

web/webkit/src/main/resources/toserve · high confidence

Added Java function interfaces and Scala bridge utilities

The core/common module now includes Java interfaces for zero- through four-argument functions (Func0 through Func4) and a Func utility class that bridges these Java types to Scala's Function0–Function4 instances, enabling Java code to seamlessly pass functions to Scala libraries.

core/common/src/main/java · high confidence

Added Lift brand artwork assets

The \artwork/LiftLogo\ directory now includes a new set of vector logo files for the Lift project, providing both the standard logo and a 'single' variant (the wordmark) in big, medium, and 150px sizes. These assets are available in both SVG and EPS formats, enabling scalable rendering across different display contexts.

artwork · high confidence

Added Scala 2.13-specific FutureWithSession implementation

A new \FutureWithSession\ class has been added to the Scala 2.13 source directory to provide session-aware future transformations. This implementation allows asynchronous operations to access the current Lift request and session context, ensuring that chained future methods can interact with session resources when the appropriate context is available on the executing thread.

_web/webkit/src/main/scala\2.13 · high confidence

Added localization files for Czech, Danish, German, French, Italian, Dutch, Swedish, and Chinese

New core property files have been added to the webkit resources, providing translations for Czech (cs), Danish (da), German (de), French (fr), Italian (it and it\_IT), Dutch (nl and nl\_NL), Swedish (sv), and Simplified Chinese (zh\_CN). These files cover standard UI strings for authentication, user profile management, validation messages, and country lists, enabling users to see interface text in their respective languages.

web/webkit/src/main/resources/i18n · high confidence

Introduce per-page JavaScript support and configurable JS initialization settings

The LiftJavaScript component now supports serving JavaScript files specific to the current page via the new servePageJs dispatch function, allowing developers to inject page-specific scripts. Additionally, the JavaScript initialization process has been updated to include a comprehensive set of configurable settings (such as liftPath, ajaxRetryCount, and cometServer) that are passed to the client-side lift.js, enabling fine-tuned control over AJAX and Comet behavior directly from the server configuration.

web/webkit/src/main/scala/net/liftweb/http/js · high confidence

Introduction of core common library components

This change introduces the foundational source files for the Lift common library, including the actor scheduler, the Box monad implementation, HList support, and various type conversions. These files establish the basic data structures and utilities that other Lift modules depend on.

repository · high confidence

Introduction of the Lift Markdown parser library

The core/markdown module now includes the Lift Markdown parser, providing a set of Scala traits and classes to transform Markdown source text into XHTML. This addition introduces BaseParsers for handling basic lexical elements (such as whitespace, newlines, and XML escaping), a Decorator trait to customize HTML output tags (e.g., for code blocks, headers, and links), and Transformer implementations (SingleThreadedTransformer and ThreadLocalTransformer) to manage the parsing pipeline. The library is based on the Actuarius parser combinator project and is designed to be mixed into existing Lift applications for Markdown rendering.

core/markdown/src/main · high confidence

New FlexMenuBuilder trait for customizable site map rendering

Added the FlexMenuBuilder trait in the sitemap package, providing a new mechanism for developers to customize how site map locations are rendered as menu items. This trait allows overriding default behaviors for rendering current links, handling empty groups or menus, and applying CSS classes based on path and current state, offering greater flexibility in navigation component design.

web/webkit/src/main/scala/net/liftweb/sitemap · high confidence

New Java compatibility bridge classes for core Lift components

Added a set of new Java-facing bridge classes (LiftRulesJ, SHtmlJ, SJ, SnippetPFJ, VarsJ, MenuJ, SiteMapJ) in the net.liftweb.http and net.liftweb.sitemap packages. These classes provide static entry points and helper methods that delegate to underlying Scala implementations via bridge classes, enabling Java callers to access core Lift functionality such as session/request variables, HTML helpers, site map building, and menu management.

web/webkit/src/main/java · high confidence

New Java utility bridge classes for array, CSS, and vendor helpers

Added Java bridge classes in the net.liftweb.util package to expose Lift's Scala functionality to Java callers. A.java provides a helper for creating arrays, Css.java bridges CSS selector transforms, and VendorJ.java provides a way to create Vendors from Java Func0, Callable, or values.

core/util/src/main/java · high confidence

New XMLApiHelper trait for REST services

Added a new XMLApiHelper trait in the net.liftweb.http.rest package that allows developers to easily build REST APIs returning XML responses. This trait provides implicit conversions to transform various data types (booleans, boxed values, node sequences) into LiftResponse objects, automatically wrapping content in a root element with configurable success, operation, and message attributes.

web/webkit/src/main/scala/net/liftweb/http/rest · high confidence

New common utilities and refactored logging infrastructure

This change introduces several new components to the core common library, including BoxLogging for easy logging of Box states, FuncJBridge for seamless Java-to-Scala function conversion, LRUMap for thread-unsafe LRU caching, and CommonLoanWrapper for orthogonal action wrapping. It also refactors the existing logging system by introducing a new Logger object with MDC support and moving Tryo functionality from lift-util to lift-common, while updating copyright years and cleaning up documentation.

core/common/src/main/scala · high confidence

New mock web testing utilities for Lift specs

Added the \MockWeb\ object and \WebSpec\ trait to the \net.liftweb.mockweb\ package to simplify unit testing outside the full testkit stack. \MockWeb\ provides helper methods like \testS\ and \testReq\ to initialize the Lift session (\S\) and request context (\Req\) for testing, including support for sharing sessions across multiple requests and applying \LiftRules\ settings like stateless rewrites. \WebSpec\ extends specs2 with implicit conversions and helper classes (\WebSpecBridge\, \SessionSpecification\, \ReqSpecification\, \TemplateSpecification\) that allow tests to easily set up \S\ or \Req\ contexts from URLs or \HttpServletRequest\ objects, and includes utilities for modifying request bodies (POST/PUT with text, JSON, or XML). The implementation has been updated to use \jakarta.servlet\ APIs and \json4s\ for JSON handling.

web/webkit/src/main/scala/net/liftweb/mockweb · high confidence

New utility classes and traits for async resolution, HTML parsing, and property management

The \core/util\ module introduces several new components: \CanResolveAsync\ provides a unified interface for resolving asynchronous containers like Scala \Future\ and Lift \LAFuture\; \HtmlParser\ adds HTML5 parsing and writing capabilities; \MarkdownParser\ enables parsing Markdown into HTML; \Props\ is expanded with support for property interpolation and custom run-mode auto-detection; \RestoringWeakReference\ allows weak references to be automatically restored after garbage collection; and \DateTimeConverter\ and \JodaHelpers\ provide standardized date/time formatting and conversion utilities.

core/util/src/main/scala · high confidence

Server-side JavaScript execution support via JavaScriptContext

A new JavaScriptContext object has been added to the webkit module, enabling server-side JavaScript execution during Lift page rendering. Users can enable this feature by calling JavaScriptContext.install() in their Boot.scala configuration, which wraps HTTP requests with a JavaScript execution context and processes \<script\> tags containing the data-lift-server attribute. The implementation utilizes the Mozilla Rhino engine to evaluate JavaScript strings and integrates with Lift's data attribute processing to allow dynamic script execution based on element attributes.

web/webkit/src/main/scala/net/liftweb/javascript · high confidence

Removals

Box.scala file removed from lift-common

The Box.scala file, which previously defined the Box companion object and the Box class for handling optional values and failures, has been deleted from the lift-common module. This removal eliminates the legacy Box API (including methods like apply, openOr, map, and implicit conversions) from this location, requiring users to rely on alternative implementations or other modules for similar functionality.

lift-base/lift-common/src/main · high confidence

PayPal module source file deleted

The main implementation file for the PayPal module (Paypal.scala) has been removed from the codebase. This deletion eliminates the existing PayPal integration logic, including transaction status definitions, payment info parsing, and HTTP client handling, effectively removing this feature from the application.

lift-modules/lift-paypal/src/main · high confidence

Removal of AMQP and XMPP integration modules

The AMQP and XMPP integration modules have been removed from the framework. This change deletes the core implementation files for these modules, including the AMQP dispatcher and sender actors (AMQPDispatcher.scala, AMQPSender.scala) and the XMPP dispatcher actor (XMPPDispatcher.scala), along with their associated Scaladoc link definitions. Users relying on these specific actor-based integrations for RabbitMQ and XMPP messaging will no longer have access to these components in this version.

lift-modules/lift-amqp · high confidence

Removal of Flot, Sparklines, TreeView, and RSS Feed widgets

The Flot charting widget, Sparklines mini-chart widget, TreeView component, and RSS Feed widget have been removed from the Lift widgets module. This deletion eliminates the Scala wrappers and associated JavaScript/CSS resource handling for these third-party libraries, meaning applications relying on these specific UI components will no longer have them available.

lift-modules/lift-widgets/src/main/scala/net/liftweb/widgets/flot · high confidence

Removal of HTTPProvider trait

The HTTPProvider trait, which previously allowed integration with underlying web containers by defining how Lift processes requests and boots the application, has been removed from the codebase.

lift-base/lift-webkit/src/main/scala/net/liftweb/http/provider · high confidence

Removal of Lift JTA transaction management implementation

The JTA transaction management implementation in the lift-jta module has been removed. This deletes the core transaction context, synchronization, and service traits (including the Atomikos-specific implementation and Hibernate lookup) that previously allowed Lift applications to manage JPA entity managers within JTA transactions. Users relying on this module for transactional JPA support in Lift 2.0 will need to adopt an alternative transaction management strategy.

lift-modules/lift-jta/src/main/scala · high confidence

Removal of Lift OSGi BundleActivator

The OSGi integration module has removed its core \Activator.scala\ file, which previously handled the automatic detection of Lift-powered bundles, managed their lifecycle (booting and unbooting), and registered the Lift HTTP filter and resources within the OSGi container. This change eliminates the automatic OSGi wiring logic provided by this specific component.

lift-modules/lift-osgi · high confidence

The RequestVarEM trait, which previously allowed users to manage JPA EntityManagers via a Lift TransientRequestVar for singleton access, has been removed from the lift-jpa module. Additionally, the packageLinkDefs.properties file containing Scaladoc link definitions for Lift and Scala JPA libraries has been deleted.

lift-persistence/lift-jpa · high confidence

Removal of TableSorter widget

The TableSorter widget, which previously transformed regular HTML tables into sortable lists with zebra-striping via jQuery, has been removed from the Lift widgets module. Users relying on this component for client-side table sorting will no longer have access to the TableSorter object or its associated JavaScript and CSS resources.

lift-modules/lift-widgets/src/main/scala/net/liftweb/widgets/tablesorter, lift-modules/lift-widgets/src/main/scala/net/liftweb/widgets/uploadprogress · high confidence

Removal of TextileParser.scala source file

The TextileParser.scala file, which contained the core logic for parsing Textile markup into HTML, has been deleted from the lift-textile module. This change removes the implementation of the Textile parser from this specific module location, likely as part of a broader restructuring or migration of the Textile parsing functionality within the Lift framework.

lift-modules/lift-textile/src/main · high confidence

Removal of XMLApiHelper trait

The XMLApiHelper trait, which provided implicit conversions for REST service providers to convert various types (such as Boolean, NodeSeq, and Box types) into LiftResponse objects, has been removed from the codebase. This change eliminates the ambiguous implicit conversions that previously allowed automatic wrapping of response data, requiring developers to explicitly handle response construction or use alternative helpers.

lift-base/lift-webkit/src/main/scala/net/liftweb/http/rest · high confidence

Removal of automatic notice fade-out helpers

The JqSHtml object, which previously provided convenience methods (fadeOutErrors, fadeOutWarnings, fadeOutNotices) to automatically fade out Lift's global notice containers, has been removed. Users relying on these specific helpers for automatic UI cleanup of error, warning, and notice messages will need to implement their own fade-out logic or use alternative JavaScript commands.

lift-base/lift-webkit/src/main/scala/net/liftweb/http/jquery · high confidence

Removal of bundled legacy JavaScript and CSS assets

The lift-widgets module no longer serves several legacy client-side libraries and their stylesheets, including the jQuery Autocomplete plugin, jQuery bgiframe, jQuery dimensions, jQuery tooltip, jQuery Flot (v0.4), ExCanvas, and the Day/Week/Month view calendar widgets. Applications relying on these specific bundled resources will need to provide their own versions or update to newer widget implementations.

lift-modules/lift-widgets/src/main/resources · high confidence

Removal of legacy AutoComplete and MenuWidget components

The legacy AutoComplete widget and the MenuWidget (including its Superfish-based menu styles) have been removed from the lift-widgets module. Users relying on these specific UI components for autocomplete functionality or horizontal/vertical/navbar menus will no longer have access to them in this package and must migrate to alternative implementations or newer widget versions.

lift-modules/lift-widgets/src/main/scala/net/liftweb/widgets/autocomplete · high confidence

Removal of legacy DBRecord and DBMetaRecord persistence traits

The \DBRecord\ and \DBMetaRecord\ traits, which provided the foundational interface for database-backed records in the \lift-record\ module, have been removed. This change eliminates the legacy database persistence layer from this specific package, meaning records defined here no longer inherit the built-in \save\, \delete\_!\, and connection identifier logic previously provided by these traits.

lift-persistence/lift-record/src/main/scala/net/liftweb/record · high confidence

Removal of legacy Facebook API integration classes

The legacy \Facebook\ and \FacebookRestApi\ objects, which handled direct HTTP communication with the Facebook REST API (version 1.0) and session management, have been removed from the codebase. This change eliminates the underlying implementation for direct REST calls and session state handling, indicating a shift away from the deprecated Facebook REST API towards a different integration method or library.

lift-modules/lift-facebook/src/main · high confidence

Removal of legacy HTTP mock and test runner classes

The Lift testkit has removed the legacy HTTP mocking infrastructure, specifically deleting the \TestRunner\ class and the \MockHttpServletRequest\, \MockHttpServletResponse\, \MockServletContext\, \MockHttpSession\, and related servlet mock classes. This cleanup removes the old, Scala 2.7-era testing utilities that relied on deprecated Scala collection classes (such as \scala.collection.jcl.HashMap\), effectively breaking compatibility with any tests that depended on these specific mock implementations.

lift-modules/lift-testkit/src/main · high confidence

Removal of legacy Lift 2.0 webkit core components

The legacy Lift 2.0 webkit core components have been removed from the codebase. This change deletes the primary implementation files for the web layer, including CometActor, LiftMerge, LiftServlet, LiftSession, Req, SHtml, Vars, and ScriptRenderer. These files contained the core logic for handling HTTP requests, session management, AJAX/Comet communication, and HTML generation. This removal signifies a major architectural shift, likely as part of a migration to a newer version of the framework or a restructuring of the Lift web module.

lift-base/lift-json/src/main, lift-base/lift-webkit/src/main/scala/net/liftweb/http · high confidence

Removal of legacy Lift modules

The \ProtoStateMachine\ trait and the \Gravatar\ widget have been removed from the framework. This eliminates the legacy state-machine implementation and the Gravatar image generation utility, requiring users to migrate to alternative state management patterns and external libraries for avatar integration.

lift-modules/lift-machine/src/main, lift-modules/lift-widgets/src/main/scala/net/liftweb/widgets/gravatar · high confidence

Removal of legacy LiftActor and LAFuture classes

The legacy \LiftActor\ and \LAFuture\ classes have been removed from the \lift-actor\ module. This deletion eliminates the previous actor implementation and its associated future mechanism, requiring users to migrate to the updated actor model provided in the current version.

lift-base/lift-actor/src/main · high confidence

Removal of legacy OpenID authentication components

The \OpenIDProtoUser\ trait and the \OpenId.scala\ file containing the \OpenIdVendor\ and \OpenIdConsumer\ implementations have been removed from the \lift-openid\ module. This eliminates the legacy OpenID 1.0/2.0 authentication logic, including the specific login forms, menu item overrides, and session-based user tracking that were previously provided by these classes.

lift-modules/lift-openid/src/main · high confidence

Removal of legacy Wizard rendering components

The \HtmlRenderer\ object and the original \Wizard.scala\ implementation have been removed from the \lift-wizard\ module. This deletion eliminates the previous HTML rendering logic and session management hooks, reflecting a significant reworking of the Wizard and LiftScreen lifecycle to support newer features such as Ajax, improved screen callbacks, and correct cache control headers.

lift-modules/lift-wizard/src/main · high confidence

Removal of legacy built-in snippets

The built-in snippets located in \lift-base/lift-webkit/src/main/scala/net/liftweb/builtin/snippet\ have been removed. This includes \A\, \Children\, \Comet\, \Embed\, \Form\, \LazyLoad\, \Loc\, \Msg\, \Msgs\, \Surround\, \Tail\, \WithParam\, and \XmlGroup\. Applications relying on these legacy tags (such as \\<lift:form\>\, \\<lift:comet\>\, or \\<lift:msg\>\) will no longer render and must migrate to the current Lift snippet APIs.

lift-base/lift-webkit/src/main/scala/net/liftweb/builtin · high confidence

Removal of legacy calendar widget components

The legacy calendar widget implementation has been removed from the Lift widgets module. This change deletes the source files for the day, week, and month view renderers (CalendarDayView, CalendarWeekView, CalendarMonthView), the data model (CalendarItem), the view metadata classes (ViewMeta), and the utility functions (CalendarUtils). Applications relying on these specific calendar views will no longer have access to these components.

lift-modules/lift-widgets/src/main/scala/net/liftweb/widgets/calendars · high confidence

Removal of legacy jQuery 1.x JavaScript artifacts

The legacy jQuery 1.x JavaScript artifacts, specifically the \JQueryArtifacts\ and \JqJsCmds\ Scala objects, have been removed from the \lift-webkit\ module. This change eliminates the deprecated helper methods and command definitions for jQuery 1.x, requiring users to migrate to the current jQuery integration layer provided by Lift.

lift-base/lift-webkit/src/main/scala/net/liftweb/http/js/jquery · high confidence

Removal of legacy persistence components

The \lift-mapper\ module has removed several legacy components, including the \CRUDify\ trait, the \AjaxMapper\ (AjaxEditableField) trait, the \ConnectionManager\ trait, the \JSONComet\ widget system, the \LoggingStatementWrappers\ DB logging proxy, the \ManyToMany\ relationship support, the \HasManyThrough\ relationship support, and the \MappedBinary\, \MappedText\, and \MappedBoolean\ field types. Additionally, the default \tableeditor\ HTML template has been deleted. These removals eliminate the ability to automatically generate CRUD interfaces, use specific AJAX-editable fields, manage custom JDBC connections via the old manager trait, utilize JSON-based Comet widgets, access detailed SQL logging proxies, and define binary/text/boolean mapped fields using the previous implementations.

lift-persistence/lift-mapper/src/main · high confidence

Removal of legacy record field implementations

The \lift-record\ module has removed the source files for its standard field types, including \BinaryField\, \BooleanField\, \CountryField\, \DateTimeField\, \DecimalField\, \DoubleField\, \EmailField\, \EnumField\, \IntField\, \LocaleField\, \LongField\, \NumericField\, \PasswordField\, \PostalCodeField\, \StringField\, \TextareaField\, and \TimeZoneField\. This change eliminates the legacy field implementations from the \net.liftweb.record.field\ package, requiring users to rely on alternative field definitions or updated library versions for these data types.

lift-persistence/lift-record/src/main/scala/net/liftweb/record/field · high confidence

Removal of legacy sitemap implementation files

The legacy sitemap definition files (Loc.scala, Menu.scala, SiteMap.scala, and XmlMenu.scala) have been removed from the codebase. This change eliminates the previous Scala-based menu location and site map structures, indicating a shift away from this specific implementation approach for defining and managing site navigation.

lift-base/lift-webkit/src/main/scala/net/liftweb/sitemap · high confidence

Removal of legacy utility modules

The \lift-util\ module has removed several legacy utility files, including \ActorPing\, \BasicTypesHelpers\, \BindHelpers\, \BindPlus\, \EnumWithDescription\, \JSONParser\, \Log\, \Mailer\, \PCDataMarkupParser\, and \Props\. This cleanup eliminates deprecated or obsolete functionality from the codebase, requiring users to migrate to current alternatives for actor scheduling, type conversions, XML binding, enumeration handling, JSON parsing, logging, email sending, and configuration management.

lift-base/lift-util/src/main · high confidence

Removed legacy Blueprint CSS resources

The legacy Blueprint CSS files (forms.css, grid.css, and ie.css) have been removed from the static resources served by lift-webkit. This cleanup eliminates outdated styling rules for forms, the 24-column grid system, and Internet Explorer-specific hacks, reducing the footprint of served static assets.

lift-base/lift-webkit/src/main/resources · high confidence

Removed lift-json benchmark suite

The benchmarking tools and documentation for lift-json have been removed. This includes the removal of Jsonbench.scala (which compared lift-json against Jackson and the standard Scala parser), Serbench.scala (which compared serialization performance against Java serialization), the Benchmark.scala trait, and the README.md containing historical performance results. Users can no longer run these specific comparative benchmarks using the provided scripts.

lift-base/lift-json/benchmark · high confidence

Behavioural changes

Added Ext Core JS artifacts and updated YUI artifacts with new methods

The framework now includes a new Ext Core JavaScript artifact implementation (ExtCoreArtifacts) that provides DSL methods for toggling, hiding, showing, focusing, serializing forms, replacing content, setting HTML, handling document load events, fading out elements, and JSON serialization. The existing YUI artifacts (YUIArtifacts) have been updated to include the same set of new methods (replace, setHtml, fadeOut, jsonStringify, formToJSON) and have had their internal ajax/comet path handling refactored to use liftPath, while also cleaning up package imports and copyright headers.

web/webkit/src/main/scala/net/liftweb/http/js/extcore · high confidence

Added async providers for Jetty 6, Jetty 7, and Servlet 3.0 using Jakarta Servlet API

New async provider implementations have been added for Jetty 6, Jetty 7, and Servlet 3.0 containers to support asynchronous request processing. These providers utilize the Jakarta Servlet API (imported as \jakarta.servlet\) rather than the older \javax.servlet\ namespace, ensuring compatibility with modern servlet containers. The Jetty 6 provider uses the legacy \org.mortbay\ continuation API, the Jetty 7 provider uses \org.eclipse.jetty.continuation\, and the Servlet 3.0 provider uses the standard \jakarta.servlet.AsyncContext\. This change enables Lift to handle async requests correctly on these specific server types while adhering to the Jakarta EE namespace.

web/webkit/src/main/scala/net/liftweb/http/provider/servlet/containers · high confidence

Blueprint CSS framework files reorganized and updated

The Blueprint CSS framework resources have been moved from the lift-webkit module to the web-webkit module, reflecting a structural reorganization of the project. This change includes the addition of a new link-icons stylesheet that displays visual indicators for various link types (such as external, email, PDF, and document links). Additionally, existing Blueprint stylesheets have been updated: the buttons plugin now uses the standard background-color property, the fancy-type plugin has been normalized for whitespace consistency, and the RTL (right-to-left) plugin has been enhanced to explicitly style span classes and ensure proper text alignment for table headers and cells.

(repo-wide) · high confidence

Built-in snippets relocated to web/webkit and enhanced with new attributes and behaviors

The built-in snippets (such as Menu, Comet, Embed, Form, Loc, Msg, Surround, and others) have been moved from lift-base/lift-webkit to web/webkit/src/main/scala/net/liftweb/builtin/snippet. This relocation is accompanied by several behavioral updates: the Menu snippet now supports a 'linkToSelf' attribute to generate links to the current page, an 'expand' attribute to control child menu expansion, and a 'level' attribute to specify the depth of menus to output; the Comet snippet now annotates containers with a 'data-lift-comet-version' attribute for better rehydration; the Surround snippet supports an 'eat' attribute to strip outer tags; and the TestCond snippet now accepts case-insensitive and underscore-separated variants for 'logged\_in' and 'logged\_out'.

web/webkit/src/main/scala/net/liftweb/builtin · high confidence

LAFuture now propagates exceptions in map/flatMap as Failure

The LAFuture implementation has been updated so that if a transformation function passed to map or flatMap throws an exception, the resulting future is satisfied with a Failure rather than crashing or leaving the future unsatisfied. This change ensures that errors occurring during asynchronous transformations are handled gracefully and can be observed by downstream consumers via the standard failure notification mechanisms.

core/actor/src/main · high confidence

The servlet provider layer has been updated to use the Jakarta Servlet API (jakarta.servlet) instead of the legacy javax.servlet namespace, requiring compatibility with Servlet 3.0+ containers. This change includes a new CookieEncoder that implements RFC 6265 and adds support for the SameSite cookie attribute (Lax, Strict, None), allowing developers to configure stricter cross-site request protections. Additionally, the HTTP request handling now supports the 'allAround' loan wrapper mechanism for intercepting the entire HTTP request lifecycle, and the filter provider correctly manages request counting and session migration snapshots.

web/webkit/src/main/scala/net/liftweb/http/provider/servlet · high confidence

Mock servlet classes migrated to Jakarta EE

The mock servlet classes in the testkit (MockHttpServletRequest, MockHttpServletResponse, MockServletContext, and related utilities) have been updated to implement the jakarta.servlet API instead of the legacy javax.servlet API. This change aligns the testkit with the broader Lift migration to Jakarta EE, ensuring that tests using these mocks are compatible with modern servlet containers and dependencies.

web/testkit/src/main/scala/net/liftweb/mocks · high confidence

Refactored HTTP provider interfaces and added explicit return types

The HTTP provider traits (HTTPProvider, HTTPContext, HTTPRequest, HTTPResponse, HTTPSession) have been refactored to conform to Scala 2.13/3 syntax standards, specifically by adding explicit Unit return types to methods that previously relied on implicit unit returns. Additionally, the HTTPRequest trait now exposes the associated HTTPProvider, allows destruction of the underlying servlet session, and provides access to the User-Agent header. The request suspension/resumption API has been updated to return a RetryState enumeration and a boolean success indicator, while HTTPResponse now includes methods to get and set the HTTP status code with an optional reason phrase.

web/webkit/src/main/scala/net/liftweb/http/provider · high confidence

The package link definitions for Scala JPA and Hibernate Transaction APIs have been removed from the Lift JTA module, eliminating the documentation links that previously pointed to Scaladocs and Hibernate API references.

lift-modules/lift-jta/src · high confidence

The \packageLinkDefs.properties\ file, which previously mapped Lift web modules (such as \liftweb.common\, \liftweb.actor\, \liftweb.util\, and \liftweb.http\) and Apache HttpClient to their respective Scaladoc URLs, has been deleted from the PayPal module. This change removes the specific documentation link definitions for this module, likely as part of the broader repository reorganization and framework structure update.

lift-modules/lift-paypal/src · high confidence

The file defining external Scaladoc links for Lift modules (lift-common, lift-util, lift-webkit) has been removed from the project. This change eliminates the automatic generation of hyperlinks to these specific external API documentation pages within the generated Scaladoc for this module.

lift-modules/lift-wizard/src · high confidence

Removal of default JTA and persistence configuration files

The default Atomikos JTA configuration (jta.properties) and the Hibernate persistence unit definition (persistence.xml) have been removed from the lift-jta module. Users relying on these out-of-the-box resource files for transaction manager setup and JPA persistence unit configuration will no longer have them available and must provide their own configuration files or adjust their setup accordingly.

lift-modules/lift-jta/src/main/resources · high confidence

The \packageLinkDefs.properties\ files have been deleted from the \lift-actor\, \lift-util\, \lift-webkit\, \lift-testkit\, and \lift-record\ modules. This removes the local configuration that previously mapped internal packages (such as \net.liftweb.common\, \net.liftweb.actor\, and \net.liftweb.util\) and external dependencies (like SLF4J, Log4j, and Apache HttpClient) to their respective Scaladoc URLs. Users relying on these local property files for generating or linking Scaladoc documentation will need to adjust their build configuration or documentation generation process.

(repo-wide) · high confidence

The \packageLinkDefs.properties\ files in the \lift-facebook\, \lift-machine\, \lift-openid\, and \lift-widgets\ modules have been deleted. This removes the local configuration that mapped internal packages (such as \net.liftweb.common\ and \net.liftweb.http\) to specific Scaladoc URLs, indicating a shift in how documentation links are managed or consolidated within the framework.

(repo-wide) · high confidence

Role.scala moved to new package structure and updated for Scala 3 syntax

The Role.scala file has been relocated from lift-base/lift-webkit to web/webkit, reflecting the framework's new directory structure. The file's package declaration has been expanded to net.liftweb.http.auth, and imports have been updated to use fully qualified names (e.g., net.liftweb.common). Additionally, Scala 3 syntax adjustments were made, including removing 'val' in for-comprehensions and adding explicit return types to methods like toString.

web/webkit/src/main/scala/net/liftweb/http/auth · high confidence

Scala 2.12 support for FutureWithSession

The \FutureWithSession\ component in the webkit module now includes a dedicated implementation for Scala 2.12. This version adds support for the \transform\ and \transformWith\ methods, which were not present in the Scala 2.11 version, ensuring that asynchronous operations decorated with session context behave consistently across both Scala versions.

_web/webkit/src/main/scala\2.12 · high confidence

WebKit source files relocated to web/webkit and refactored for Scala 3 compatibility

The core webkit source files have been moved from the lift-base/lift-webkit directory to web/webkit/src/main/scala/net/liftweb/http. This relocation is accompanied by package structure updates (e.g., splitting \package net.liftweb.http\ into \package net.liftweb\ and \package http\) and import modernization (removing \\root\\ prefixes) to align with Scala 3 syntax requirements. Additionally, several new components have been introduced in this location, including \ContentParser\ for template parsing, \LAFutureWithSession\ for session-aware futures, \MVCHelper\ for MVC-style routing, \NamedCometActorSnippet\ and related traits for named comet actors, \Paginator\ and \PaginatorSnippet\ for pagination, \ScopedLiftActor\ for session-scoped actors, \ServiceRequestTimer\ and \SnippetTimer\ for performance logging, and updated \Factory\, \ResourceServer\, and \Vars\ implementations.

web/webkit/src/main/scala/net/liftweb/http · high confidence

Test coverage

Added Scala 2.13 test suite for core utility components; Added Scala 2.13-specific test suite for Lift webkit components; Added Scala 3 test suite for Lift Actor and LAFuture; Added Scala 3 test suite for core common utilities; Added Scala 3 test support for MockHttpRequest and TestKit; Added Scala 3-specific test suites for MockWeb and WebSpec; Added empty test scaffold for Helpers; Added test coverage for webkit components; Added test resources for HTML5 parser, ToHead, and Props specs; Added test resources for WebSpec and embedded Jetty logging; Added tests for FutureWithSession in Scala 2.11 and 2.12; Added tests for Scala 3 Memoize functionality; Added tests for liftVanilla and liftJQuery AJAX headers; Added unit tests for the Markdown parser components; Refactored testkit HTTP client to support generic response types; Removal of Lift Widgets demo snippets; Removal of legacy JSON test suite and fixtures; Removal of legacy Specs 1 test suite in lift-util; Removal of legacy test webapp scaffolding; Removal of legacy webapp test fixtures and boot configuration; Removed Lift-Widgets test webapp demo files; Removed TransactionMonadSpec test file; Removed WizardTest.scala; Removed legacy Lift Mapper test infrastructure; Removed legacy Specs 1.x test suite for Box; Removed legacy TextileSpec test suite; Removed obsolete test boot configuration file; Removed test bootstrap file for Lift widgets; Removed unused PayPal IPN test file.

Dependencies

Build infrastructure restructured for Scala 3 and modern dependencies

The project build has been reorganized into dedicated Scala files (Dependencies.scala, LiftSbtHelpers.scala, etc.) and upgraded to sbt 1.12.1. This change introduces support for Scala 3 alongside Scala 2.13, updates core libraries such as json4s to 4.2.0-M3 and slf4j to 2.0.17, and migrates the servlet API to Jakarta EE 6.1.0. The build also adds sbt-bloop for IDE integration and updates test frameworks like specs2 and scalatest to versions compatible with the new Scala targets.

project · high confidence

Migrate build system from Maven to SBT

The project's build configuration has been replaced with an SBT-based setup (build.sbt), removing all legacy Maven pom.xml files. This change updates the default Scala version to 2.13.18 and adds support for cross-compilation with Scala 3.3.7. The new build defines the core modules (common, actor, markdown, util) and web modules (testkit, webkit), managing dependencies such as specs2, scalacheck, and Jetty 11 through SBT settings.

(dependencies) · high confidence

Housekeeping

Removal of placeholder .keep files in lift-oauth module; Removed Lift Mapper Scaladoc package link definitions; Repository governance and setup documentation added.

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.

Score

  • CAI 32 → 35 (+3.8)
  • Rubric changed (rubric-2026.08.15 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 22 → 36 (+13.4)
  • Architecture 69 → 72 (+3.3)
  • Maturity 49 → 57 (+8.7)
  • Readiness 20 → 27 (+6.2)
  • Security 87 → 67 (-19.3)
  • Accessibility 37 (new)

Resolved (72)

  • (anonymous) (cognitive 18) (web/webkit/src/main/resources/toserve/extcore/ext-core-debug.js)
  • (anonymous) (cognitive 20) (web/webkit/src/main/resources/toserve/extcore/ext-core-debug.js)
  • Dimension evaluation failed
  • Duplicated block (17 lines × 2) (core/util/src/main/java/net/liftweb/util/Css.java)
  • Duplicated block (45 lines × 2) (core/common/src/main/java/net/liftweb/common/Func.java)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • No automated tests
  • No exposed public API
  • No tests found
  • Rotate the exposed credentials — git history can't be un-committed
  • Scanner failed to run — not a clean result
  • Secret: generic-api-key (context7.json)
  • Test reliability not included
  • The document is a single-person authored 'Simply Lift' entry that gives an overview of the framework and licensing but does not cover core features such as routing, templates, or how to run the server. (docs/simply_lift.md)
  • _addListener (cognitive 23) (web/webkit/src/main/resources/toserve/yui/event.js)
  • _addListener (cyclomatic 17) (web/webkit/src/main/resources/toserve/yui/event.js)
  • _removeListener (cognitive 35) (web/webkit/src/main/resources/toserve/yui/event.js)
  • _removeListener (cyclomatic 25) (web/webkit/src/main/resources/toserve/yui/event.js)
  • …and 52 more

New (294)

  • (anonymous) (cognitive 103) (web/webkit/src/main/resources/toserve/extcore/ext-core-debug.js)
  • (anonymous) (cognitive 120) (web/webkit/src/main/resources/toserve/extcore/ext-core-debug.js)
  • (anonymous) (cognitive 16) (web/webkit/src/main/resources/toserve/extcore/ext-core-debug.js)
  • (anonymous) (cognitive 22) (web/webkit/src/main/resources/toserve/extcore/ext-core-debug.js)
  • (anonymous) (cognitive 31) (web/webkit/src/main/resources/toserve/extcore/ext-core-debug.js)
  • (anonymous) (cognitive 39) (web/webkit/src/main/resources/toserve/extcore/ext-core-debug.js)
  • (anonymous) (cognitive 46) (web/webkit/src/main/resources/toserve/jlift.js)
  • (anonymous) (cognitive 89) (web/webkit/src/main/resources/toserve/extcore/ext-core-debug.js)
  • (anonymous) (cyclomatic 134) (web/webkit/src/main/resources/toserve/lift.js)
  • (anonymous) (cyclomatic 154) (web/webkit/src/main/resources/toserve/yui/dom.js)
  • (anonymous) (cyclomatic 16) (web/webkit/src/main/resources/toserve/extcore/ext-core-debug.js)
  • (anonymous) (cyclomatic 28) (web/webkit/src/main/resources/toserve/extcore/ext-core-debug.js)
  • (anonymous) (cyclomatic 32) (web/webkit/src/main/resources/toserve/extcore/ext-core-debug.js)
  • (anonymous) (cyclomatic 34) (web/webkit/src/main/resources/toserve/jlift.js)
  • (anonymous) (cyclomatic 65) (web/webkit/src/main/resources/toserve/extcore/ext-core-debug.js)
  • (anonymous) (cyclomatic 76) (web/webkit/src/main/resources/toserve/extcore/ext-core-debug.js)
  • (anonymous) (cyclomatic 88) (web/webkit/src/main/resources/toserve/extcore/ext-core-debug.js)
  • (anonymous) (cyclomatic 93) (web/webkit/src/main/resources/toserve/extcore/ext-core-debug.js)
  • (anonymous)::(anonymous)::(anonymous)::setRunAttr (cognitive 20) (web/webkit/src/main/resources/toserve/extcore/ext-core-debug.js)
  • (anonymous)::(anonymous)::getXY (cognitive 41) (web/webkit/src/main/resources/toserve/extcore/ext-core-debug.js)
  • …and 274 more

Changes since last survey

  • 1 commits — 1 feature/other, 0 fixes

By area

  • core/util — 1 commit

Notable commits

  • change: doc: update readme for recent changes (#2059)

Architecture

  • Containers 0 added · 0 removed · contexts 1 added · 0 removed · edges 0 added · 0 removed

Added bounded contexts (1)

  • repository

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

lift/framework was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 27 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 72d30bf155c1ddd280651cd75b13dd1f1f571502 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-d00c643c3f66.