The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Revision history for Perl module Bot::Cobalt

0.021003 2016-07-31

  - Cwd-in-@INC security improvements
    
    Drop "." from @INC when running 'cobalt2'
    Ignore "." in @INC when Bot::Cobalt::Core::Loader->load is called

  - Removed deprecated Plugin::Extras::Money (broken for some time)

  - Randomize Plugin::Games::Roulette output

  - POD improvements

0.021002 2016-06-23

  - Fix '!cpan changes' (Plugin::Extras::CPAN)

0.021001 2016-06-16

  - Fix ContextMeta->list_as_array

  - Add '!alarmclear' command to Plugin::Alarmclock

  - Add '!cpan changes' command to Plugin::Extras::CPAN

  - Logger-related fixes

  - Minor Plugin::RDB::AsyncSearch worker optimizations

  - Various Plugin cleanups and minor optimizations;
    Plugin::Seen, Plugin::Debug, Plugin::Extras::CPAN, Plugin::Games::

  - POD improvements

0.020001 2016-01-14

  - Alarmclocks are now persistent between runs

  - Revert ContextMeta changes (poorly considered; too much breakage)

0.019003 2016-01-08

  - Fix an interactive prompter bug that would fail to capture after
    re-asking due to bad input (busted in v0.17.7)

0.019002 2016-01-07

  - Message-related optimizations

  - Move old darkbot6/cobalt1 import tools from bin/ to tools/

  - Improved ContextMeta argument & validity checks

  - Kill stale dependency on Term::ReadKey

0.019001 2015-12-29

  - Add '!topkarma' command to Plugin::Extras::Karma

  - Fix caching behavior in Plugin::Extras::Karma to play nicely with external
    modifications (or shared Karma DBs)

  - Fix Plugin::Seen to force a database sync when unregistering

  - Fix day(s)/year(s) pluralization in secs_to_str/secs_to_str_y

  - Support Bot::Cobalt::DB->dbdump('HASH') for exporting a data structure

0.018001 2015-12-16

  - Remove stale documentation regarding deprecated '%COLORS' hash
    (no longer exported)

  - Adjust Seen plugin to report years + days

  - Add 'secs_to_timestr_y' to Utils

0.017008 2015-12-16

  - Add '!server reconnect' (alias to connect)

  - Add import/merge tool for eggdrop bseen DBs -> Plugin::Seen DBs

  - Fix a possible bug regarding all-zero RDB IDs

  - Improved RDB configuration validation

  - Handle broken SeenDBs more gracefully

  - Various minor optimizations

  - Stale documentation cleanup

0.017007 2015-08-15

  - Make Plugin::Extras::Debug safe to load persistently

  - Devel::MAT dump command for Plugin::Extras::Debug

  - Fix a bug in '!server connect' error reporting

  - Improved error reporting in configuration handling

  - Various optimizations

0.017006 2015-04-13

  - Fix Plugin::RDB blocking search; a blocking search that returned no
    matches would previously fail to DTRT and potentially leave an open shared
    read lock on the searched RDB

  - Ensure STDERR/STDOUT are reopened before Logger is initialized when
    daemonizing

  - Minor Info3 optimization

0.017005 2015-04-09

  - Fix Plugin::RDB::AsyncSearch MaxWorkers limiter

  - Fix busted stderr redirection when daemonizing

  - Various minor cleanups & POD fixes

0.017004 2015-03-22

  - Fix ::Plugin::Rehash (broken in 0.017)

0.017003 2015-03-15

  - Fix ::Plugin::Seen

0.017002 2015-03-06

  - Missing dependency 'Devel::StackTrace'

0.017001 2015-03-05

  - Deprecate most uppercase and camel-case methods/attributes

  - Export types from Types::Standard and List::Objects::Types from
    Bot::Cobalt::Common, drop MooX::Types::MooseLike

  - Import 'strictures' without arguments to importers of Bot::Cobalt::Common;
    'use strictures 2' internally for saner fatal warnings behavior

  - Remove deprecated 'Extras::Shorten' plugin (sadly metamark is no more)

  - Refactor Bot::Cobalt::Common to use a custom import method

  - Use JSON::MaybeXS with 'utf8 => 1' for JSON serialization
  
  - Use ShareDir for base 'etc/' files

  - Refactor cobalt2-installer to be cleaner/saner and use new ShareDir

  - Refactor Bot::Cobalt::Lang to use ShareDir, drop inlined language set

  - Begin deploying List::Objects::Types / List::Objects::WithUtils across
    codebase

  - Begin deploying Path::Tiny across codebase

  - Switch to Exporter::Tiny in exporting modules

  - Switch to dist.ini + cpanfile packaging

  - Deprecate old 'tools/'

  - Various other more minor cleanups, fixes, and optimizations

0.016003 2014-05-25

  - Fix hi-res time support in ::IRC::FloodChk

  - Fix possible memory leak in Conf objects

  - Fix perl-5.12.5 test failures (missing explicit IO::File require)

  - Drop base.pm in favor of parent.pm

  - POD fixes

  - Various cleanups (including leftover Moose-y namespace::clean imports)

0.016002 2013-04-25

  - Kill smart-matching and when() in preparation for perl-5.18

0.016001 2013-03-02

  - Utils; Fix escaped [] in globs

0.016000 2013-02-25

  - POD fixes, switch to long-form vers

0.015 2013-02-24

  - Plugin::Auth; fix mixed-case superuser usernames (miniCruzer)

  - Serializer utf8 handling fixes
  
  - Drop XML serialization support

  - IRC; Support 'Umodes:' directive in IRC context confs (avenj)

  - POD fixes and example config cleanups (miniCruzer)

  - Plugin::WWW; MaxPerHost configuration directive (avenj)

  - Plugin::Extras::Money; fix output formatting    (avenj)

  - Plugin::Games::Roulette; expire old entries     (avenj)

  - Purge almost all use of smart-match / when()    (avenj)


0.014 2012-07-21

  - Add logging-related opts LogFormat and LogTimeFormat (cobalt.conf)

  - Plugin::RDB; allow for deletion of multiple items via 'rdb del'

  - POD updates; documentation for Logger::Output:: classes was old/wrong.


0.013 2012-07-20

  - Fully reworked configuration file handling; see docs for Bot::Cobalt::Conf
    for details. Incompatible changes:
    - get_core_cfg() now returns a Bot::Cobalt::Conf::File::Core
      Previously returned a HASH.
    - 'PluginOpts' no longer exists. Opts directives specified in 
      plugins.conf will override directives from loaded configuration 
      files.

  - Dropped Log::Handler dependency. Logging is now handled by 
    Bot::Cobalt::Logger (and twice as fast per message!)

  - Importing Bot::Cobalt::Common will now import 'strictures 1' rather 
    than strict + warnings.
  
  - Fix Bot::Cobalt::IRC to be more discerning about Bot_rehash events and 
    triggered autojoin reloads.

  - Drop DateTime dependency; strftime() will do.
  
  - Explicitly use JSON::XS. Saves some overhead vs. 'use JSON' and 
    performance sucks without it anyway. (We are already pulling in XS 
    bits, so 'eh')

  - Plugin::RDB; Revert to strictly random item IDs; hashing is unnecessary 
    overhead. Drops Digest::SHA dependency.
  
  - Plugin::RDB; Clean up randstuff timer in _unregister.

  - Plugin::Extras::DNS; add simplistic iptohex and hextoip command 
    handlers.

  - Core::Role::Singleton; kill is_instanced in favor of Moosey 
    'has_instance'

  - Optimized Bot::Cobalt::Utils::rplprintf()


0.012  2012-07-05

  - Add Bot::Cobalt::Error exception objects; adds Devel::StackTrace as a
    dependency.

  - Convert Plugin::Auth and Plugin::RDB / Plugin::RDB::Database to 
    make use of Bot::Cobalt::Error.

  - Language sets updated to include RDB_ERR_INVALID_NAME
    (Core lang SPEC numbers bumped to 7.)

  - Rewrite Bot::Cobalt::Lang, related tests & documentation.

  - Largely refactored Plugin::RDB; various bugfixes, no functionality 
    changes.

  - Provide core()->rpl method as a frontend to rplprintf.
    Return proper error strings when a specified RPL is missing.

  - Provide POE::Component::Client::DNS instance via core()->resolver; 
    share amongst IRC sessions & Plugin::Extras::DNS to save some 
    overhead.

  - IRC::Server; provide uppercase()/lowercase() methods making use of 
    available casemap() value.


0.011  2012-06-30

  - Fix conflated incoming/outgoing notice events:
   - Outgoing notices still go to 'send_notice' or 'notice'
   - Incoming notices to 'got_notice'

  - Bot::Cobalt::Core::Sugar subs are now prototyped.

  - Shorter lock retry delays in Bot::Cobalt::DB, Bot::Cobalt::Serializer.
    Also remove 4-arg select() statements in favor of Time::HiRes 
    (Windows doesn't like select-on-undef, I'm told).

  - Plugin::RDB bug fix; reset rdb_broadcast timer regardless of whether 
   _select_random() failed.
   
  - Plugin::Extras::CPAN; Add 'belongs' command.
  
  - Various smaller bugfixes, test expansions, POD cleanups.


0.010  2012-06-21

  - Add Bot::Cobalt::Core::Loader, a lightweight module load/unload class,
    and update Bot::Cobalt::Core + Bot::Cobalt::Plugins::PluginMgr to make 
    use of it. Sanitizes previous module load/unload code.

  - Bot::Cobalt::Plugin::Auth:
    - Handle configured superusers in context '-ALL'
    - Reloadable
    - Significant cleanups
  
  - Bot::Cobalt::IRC::FloodChk; support fractional seconds.

  - POD updates, particularly Bot::Cobalt::Manual::Plugins.

  - Wide-ranging cleanups, minor optimizations and expanded tests.


0.009  2012-06-15

  - Fix RDB.pm bug that would cause log noise on certain command 
    dispatches.
  
  - Vaguely improved configuration validation.

  - The beginnings of some core / PluginMgr plug load/unload cleanup.


0.008  2012-06-13

  - Core configuration accessors no longer return cloned copies of config 
    hashes. This behavior was intended to make it harder for plugins to 
    break core config unintentionally, but it was also unintuitive 
    enough to trip myself up from time to time ;-)
    Return actual references instead.
  
  - Bot::Cobalt::Serializer:
    - Drop Logger/LogMethod, always carp/croak/confess
    - Throw proper exceptions on most errors
    - Support writefile() lock retries and timeout

  - Bot::Cobalt::IRC refactor and fixes:
    - ircplug_connect & ircplug_disconnect handlers
    - '!server' command handler in IRC::Role::AdminCmds    
    - Move outgoing-to-IRC handlers to IRC::Role::UserEvents
    - Improved disconnect cleanup
    - Improved warnings/logging

  - Bot::Cobalt::Utils:
    - support list-style arguments in rplprintf()
    - build %C_vars for rplprintf at load-time rather than when called 
  
  - Plugin::Master; required access levels should've come from PluginOpts
    (rather than Opts, as this plugin doesn't normally have an external cfg)

  - Die with stack traces on most errors (confess rather than croak)

  - Various syntax / POD / test cleanups.


0.007  2012-06-06
  
  - Fix usage help message in Plugin::Extras::CPAN.

  - Push missing bin/cobalt2{-installer, -plugin-installcf} portable path 
    fixes. (Uh, oops?)
  
  - Add missing test for Frontend::RC.


0.006  2012-06-05

  - Fix instance rc files:
    - Kill old-style rcfiles, use YAML like other confs
    - Allow absolute 'BASE' path to be passed in
    - Default to cwd() if not absolute and home directory not available
    - Create portable paths (File::Spec)
  - This is an incompatible change; issue an informative error and 
    suggest running `cobalt2-installer` on failure.

  - Add Plugin::Extras::CPAN, a simplistic MetaCPAN and Module::CoreList 
    querying plugin.

  - Add debug opt to Bot::Cobalt::Conf constructor. Pass our --debug value 
    to Conf as well (in bin/cobalt2 and Plugin::Rehash).

  - Bot::Cobalt::Serializer should complain when freeze() or thaw() are 
    given no data.

  - Improved ::Core log object handling. Create initial log object at 
    construction-time (not Syndicator start time) and ensure that 
    replacement log objects can handle log methods in use in the core set.
  
  - Use Try::Tiny in place of previous block evals and $@ checks.

  - Depend on newer POE::Component::Client::HTTP and 
    POE::Component::Resolver. Systems with older Components that happened 
    to grab newer Socket::GetAddrInfo would produce failures due to 
    Socket::GetAddrInfo API changes -- newer POE bits make use of newer 
    Socket.pm and drop the GetAddrInfo dependency entirely.
    ...Not technically "our problem" but this makes my life less annoying 
    on a couple machines :-)

  - Some POD improvements and widely expanded tests.

  - Drop 'tick' tracker for low-priority timer pool; pretty useless.

  - Various small bug/oversight fixes:
   - Conf.pm; catch Serializer failures and report more details
     Related Plugin::Rehash fix to leave current configs untouched on
     read_cfg failures.
   - IRC.pm; more consistent error messages
   - IRC::Event::Nick; fix common() when channels() has changed
   - Explicitly 'use strictures' in IRC::subclasses
   - Plugin::Auth; log to error() not emerg()


0.005  2012-05-29

  - Fix an IRC.pm bug that would cause failures if an error event was 
    received for a context that never completed a connection.

  - Fix Utils.pm bug in glob_functions that would cause failures when
    operating on an untrue value. Should've been defined() checks.

  - POD and test improvements and clean-ups.


0.004  2012-05-27

  - Fix IRC.pm bug that kept sessions hanging about when the bot was 
    terminated via an online command. (This fixes the busted '!die' 
    command from Plugin::Master).
  - Also improve shutdown cleanups in Core.

  Code cleanups (no functionality change):
   - Bot::Cobalt::IRC
   - Bot::Cobalt::Utils
   - Significant POD cleanups


0.003  2012-05-22

  - Require perl-5.12.1; given/when changed sometime in there, it seems,
    and I'm tired of playing with EOL Perls anyway.

  - Some Plugin::RDB cleanups.


0.002 2012-05-22

  - Fix a couple oversights resulting in test failures:
   - Fix Utils.pm test failures on <perl-5.14
   - Fix Plugin::Auth syntax error on <perl-5.14

  - Plugin::RDB:
   - Warn if Info3 seems to be missing

  - POD tweaks.


0.001 2012-05-22

  - Initial release of Bot::Cobalt