563 lines (421 sloc) 21.7 KB

v2.19.0 (2016-05-0-6)

Full Changelog

Implemented enhancements:

Merged pull requests:

v2.18.0 (2016-01-19)

Full Changelog

Implemented enhancements:

Closed issues:

  • Allow for non-integer user id in the shell adapter. #1117
  • Markdown syntax in docs/ preventing update of #1100
  • Possible Error in Docs #1096
  • Propose adding Hubot-Mattermost to list of Hubot adapters #1089
  • bug(hubot@2.17.0): adapters don't run script #1086
  • Depressing Pug Picture #1084
  • Hubot - robot.http get method returns null body & res. Suspecting hubot timing out #1080
  • Steam + Hubot #1076
  • Hubot won't start on Heroku because of node modules #1071
  • Documentation 404 #1064
  • Can't make HTTP requests #1060
  • Define and document testing patterns for scripts #985

Merged pull requests:


Full Changelog

Merged pull requests:


Full Changelog

Merged pull requests:







  • Update scripting documentation to ref to res instead of msg, since it's a Response object
  • Update scoped-http-client from 0.10.0 to 0.10.3
  • Fix deprecation warnings from connect at startup


  • Fix shell adapter parsing history on node 0.8 (ie don't include newlines)


  • Fix issues around shell adapter throwing errors when there isn't a .hubot_history file


  • Add support for namespaced alternative environment variables for controlling the port and address express binds to (EXPRESS_PORT and EXPRESS_BIND_ADDRESS).


  • Automated testing
  • Cleanup uncaughtException handlers, to avoid node warning about a memory leak during tests


  • Update script package sample
  • Include Message class in exported module (ie require 'hubot')
  • Support custom options when calling robot.http that are passed onto the scoped-http-client
  • Update scoped-http-client dependency to 0.10.0
  • Fix error when loading a script that doesn't export a function; log a warning instead


  • Add support to shell adapter for customizing the user with HUBOT_SHELL_USER_ID and HUBOT_SHELL_USER_NAME
  • Add history support to shell adapter, so it remembers commands previously used


  • Allow robot.respond to work when there is preceding whitespace
  • Update robot.parseHelp to be synchronous, so it's easier to test
  • Reduce Heroku ping interval from 20 minutes to 5 minutes to keep hubot from going unavailable
  • Make surerobot.pingIntervalId is kept after setting up Heroku ping interval


  • Update express dependency to a version isn't affected by CVE-2014-7191
    • More specifically, a version of express that depends on connect that depends on qs that isn't vulnerable


  • Improve instructions for using new yeoman generator when calling hubot --create


  • Deprecate hubot --create in favor of new yeoman generator


  • Fix error when trying to find userForName, when name is incorrectly set as an integer


  • Fix error logging when not using any error handlers



  • Add support for hubot --config-check to verify hubot will load based on how it's configured
  • Include script/ directory for convenient one-liners for common tasks of developing github/hubot
  • Fixes to default image me and help
  • Updated documentation about external scripts
  • Add better debug output when receiving text messages


  • Fix Campfire adapter to specify a User-Agent


  • Update Campfire adapter to specify a User-Agent


  • Updated list of adapters in documentation
  • Document script load order
  • Support any file extension for script that node supports


  • Expose the robot adapter name as robot.adapterName.


  • Update error handling API to pass along msg object in more cases - technicalpickles


  • Support binding to a specific IP address - smerrill
  • Add error handling API - technicalpickles
  • Remove since it uses a now-removed Google service - technicalpickles
  • MOAR MUSTACHES - cannikin


  • Fix new bot template to get the latest version of the bot - technicalpickles


  • Fix documentation for setting up Redis on Heroku - thiagopnts
  • Document script load ordering - balbeko
  • Fix extra space in help messages - vanetix
  • Parse 'Authors' section in script documentation - spajus
  • Differentiate the different types of Campfire errors - simonsj
  • Consistently load files across platform - technicalpickles
  • Fix topic handler to be able to access the text of its body - wingrunr21


  • Fix issues with disabling the HTTP server - balbeko
  • Add usersWithRole to - jhubert


  • Destructure TopicMessage in to fix a bug - tombell
  • Update to respond to calculator - bartolsthoorn


  • Show robot.alias in help commands if defined - technicalpickles
  • Epic documentation update - technicalpickels
  • Remove from generated hubot-scripts.json since it has a npm dependency - tombell
  • Don't load if using - tombell
  • Make sure to clear interval for pinging Heroku URL - tombell
  • Fix deprecation warning in - timclipsham
  • Fix youtube results bug - timclipsham


  • Clear ping timeout when shutting down - tombell
  • Don't load if using - tombell
  • Removed from default hubot-scripts - tombell
  • Removed Response#http deprecation warning - tombell
  • Updated version range for hubot and hubot-scripts - tombell


  • Fix an issue with the version being out of sync with the version specified in the generated package.json


  • Add the ability for hubot to lock/unlock rooms in Campfire


  • Fix race condition in brain loading
  • Fixup translate scripts for spaces in languages


  • Parse help from external script package scripts - aaronj1335
  • Remove bad script header from pugme - maxgoedjen
  • Fix exception when sending multiple messages - aroben
  • Add 'maths' to math me regex - jacksonhull


  • Add the auth script as a default script - tombell
  • Updated @userForId uses for deprecation - kch
  • Fix hubot respond bug - shiwano
  • Default user-agent for HTTP requests - aroben
  • Fix copying executable files - brntbeer
  • Fix issues with mkdirDashP - Ronald Evers


  • Add the ability to listen for topic changes - wingrunr21 and tombell
  • Register default HTTP routes with - kashyapp
  • Swap connect out for express - creatorr
  • Brain has become more key-value store-like - creatorr
  • Google Image script improvements - kyleslattery
  • Help script fixes - Abraham
  • Add deprecation messages to functions - tombell


  • Exit on startup for a variety of critical failures.


  • Add 'examples' and 'urls' to list of known documentation sections
  • Improve mustache results - marsam in #341


  • Fix help parsing of javascript iles - ferlores in #322
  • Roles will correctly semicolon-delimit the list of roles if one (or more) roles contain a comma. - futuraprime in #327
  • Updated translations of supported languages as of 20120801 - sopel in #328
  • Escape brackets in html view of help - tombell, technicalpickles
  • More coffee-like - elmoeleven in #336
  • Fixed reference to when npm was included w/ node - technicalpickles in #347
  • Backwards-compatible help parsing, and tracking all documentation instead of just commands - technicalpickles


  • New route /hubot/help to display command help - tombell
  • Role script fix - ferlores
  • Store connect server - tombell


  • Extracted remaining classes into their own files - tombell

Note this is a breaking change for adapters. Adapters are going to want to use the following code snippet for requiring classes from hubot.

{Adapter,Robot} = require 'hubot'
  • Update the formatting of documentation comments at the top of scripts - technicalpickles
  • Update the parsing of the documentation comments - tombell


  • Fixed keep alive ping, requires HEROKU_URL - tombell and jimeh
  • Updated dependency versions - tombell and jimeh


  • Hubot now keeps himself alive due to Heroku's web processes shutting down when idle - tombell
  • Hubot's image search is now defaulted to safe search - kylev
  • Hubot now emits a 'connected' event when he connects to the chosen adapter - sbryant

  • Fix the not to respond to empty names - christierney

v2.1.3 - The Heat Stroke Release

  • Hubot now has a web interface and supports connect middleware, examples in - atmos / tombell

    module.exports = (robot) -> robot.router.get "/hubot/version", (req, res) -> res.end robot.version

  • Add a catchAll callback that handles responses that match nothing else - titanous / ejfinnerman

    module.exports = (robot) -> robot.catchAll (msg) -> router.get "/hubot/version", (req, res) ->


  • Update behaviour of finishing further execution of listeners
  • Scripts are now loaded in the following order
    • Scripts defined in ./hubot-scripts.json are loaded in order
    • Scripts are loaded alphabetically from /scripts


  • The hwhoops release, finish/done behavior is handled elsewhere


  • Introduce Response.finish() to indicate that a message should not be passed on to any other listeners
  • Scripts are evaluated in the following order

    • ./scripts is loaded alphabetically
    • The contents of ./hubot-scripts.json is loaded in order

      module.exports = (robot) -> robot.respond /\syo\s\?/i, (msg) -> msg.reply "Yo!" msg.finish()


  • Update topic and logger scoping fixups - Horace Ko
  • Don't exit the process if listening to a room is denied


  • Don't kill all username looks if some users don't have name attribute


  • All adapters have been removed except for shell and campfire
  • Better win32 compatability
  • Campfire reconnects on streaming errors on a per-room basis


  • Major adapter overhaul, they're now external - Tom Bell
  • Shell adapter now functions like a REPL - Tom Bell
  • Improved logging using log.js - Tom Bell
  • Search help commands - Gabriel Horner
  • Improvements to - Daniel Schauenberg


If you are not using the Campfire or Shell adapters please be aware before upgrading that adapters have been moved out of the code of hubot and you should install the hubot adapters from npm when people make them available. Until your adapter is available you may wish to remain on v1.1.11.





  • Fix a bug in robot.respond that allowed regexes to be constructed that could be triggered without prefixing with the robot's name - atmos
  • Fixup rarely triggered response stuff that uses an undefined variable




  • Fix the optparse npm install anomaly


  • Fix campfire adapter getting duplicate messages - atmos



If you're using the redis persistence you're going to need to enable '' in your hubot-scripts.json file. It was moved there and the brain now supports events allowing you to use any persistence backend you want.


  • Remove infinite loop script to keep things alive - atmos