Lita 3.0 was released on February 26, 2014. It contains several new features and improvements for both users and plugin developers.

Changes for users

  • The built-in web server is now powered by Puma. This should exhibit improved performance with a smaller memory footprint, especially on JRuby. (Rubinius currently does not support Ruby 2.0 syntax, so Lita will not run on it yet.)
  • Lita is now internationalized. The language used for both CLI and runtime messages can be changed via environment variable or configuration attribute. Pull requests adding translations for new languages are most welcome!
  • New join and part commands allow administrators to manage channel presence at runtime.
  • A new info command tells you what version of Lita is running.
  • The auth commands now accept a user name or mention name in addition to ID.

Changes for plugin authors

Note: Older plugins may be locked to a 2.x version of Lita in their gemspec file. These plugins will need to have their version requirement changed to use "<=" instead of "~>" to be installable with Lita 3.0.

There are three changes which are not backwards-compatible, which plugin authors should be aware of:

  • The previously deprecated method signatures for and have been removed. Code in the wild has mostly already updated, so this should not have any effect.
  • Lita.config is now deeply frozen before the robot is started. This was done to improve thread safety when using globally accessible data. Any plugin code that is mutating Lita.config outside of the default_config Handler class method will need to be updated. The major adapter plugins have already been updated to support this change.
  • Lita::RSpec now requires RSpec version 3.

The following new features are available:

  • The HTTP router now supports Sinatra-style path variables, globbing, and regular expression constraints.
  • Lita is now internationalized and plugins can easily add support for new locales.
  • Lita::Robot and Lita::Adapter have new #join and #part methods for managing channel presence at runtime.
  • Timers allow code to execute after a delay or repeatedly at intervals.
  • New, more convenient methods for looking up users by partial name, mention name, or a fuzzy find that will accept any type of user identifier.

Additional changes include:

  • Improved RSpec support, with better output for chat/HTTP/event routing tests when using the documentation formatter or when examples fail.
  • Improved documentation.